ajax/fetch上传富文本时出现中文乱码的解决方案(百分号有关问题)
最近正在编写自己的项目,其中遇到了nodejs后台接受到的富文本参数显示中文乱码的问题
一开始我以为是字符编码方式的错误,于是在请求参数的地方设置了utf-8,也就是:
headers: {
'Content-Type': 'x-www-form-urlencoded;charset=utf-8'
}
这样做确实可以解决这方面的问题,然而我的问题仍没有得到解决,于是后来我细心的发现我的上传文字中出现了百分号%,那么问题的根源就找到了,encodeURIComponent(“中文”)会出现百分号,所以由此可得知fetch在处理上传数据的时候会自动对该数据进行编码,于是在前端这边可以对上传数据进行二次编码,把'%'编码成'%25',那么在后端就可以正确的获取数据:
data:{id:1, content:encodeURI(encodeURI(‘商品'))}