Vue-Resourse发送请求后台接收参数乱码问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue-Resourse发送请求后台接收参数乱码问题相关的知识,希望对你有一定的参考价值。

参考技术A 前台和后台乱码的问题可以说是家常便饭,一般两端定义好使用同一个字符集是不会有问题,但是昨天遇见一个小坑,分享一下。

先说环境吧,后台tomcat+spring,标准的SSM框架。tomcat配置文件和我知道能设置编码的地方都设置成UTF-8。之前使用jQuery请求正常,无乱码现象,因为最近使用vue,jQuery各种意义上的很多功能都使用不上,所以找到了vue-resourse,最强大的是这个还带有拦截器功能,嘛,可以在每次请求前后做一些操作,用处诸君可以随便想象。

然后问题来了,一切都那么美好,使用简单,功能强大,可是,可是他居然中文乱码,这就很奔溃了,网上找了大量的教程,官方文档也努力找,可是依然没找到相关问题。so,只能自食其力咯。

乱码嘛,一开始想的当然是服务器的编码,确认再三,应该是没问题的,之前jQuery请求都是正常的,那好么,观察jQuery和vue-resourse发送的请求有何不同,嘛,其实也就content-type后面多了一个charset:utf-8。很简单,我立马想到了拦截器,每次请求前给request设置个请求头,大概是这样写的。

可以,很简单。嗯,看起来应该就可以了,可是试一下发现,这个Content-Type怎么完全没变啊,然后又是一阵折腾,比如设置其他请求头都有效,可是Content-type却无效,嗯,继续看文档,发现Vue.http.options.emulateJSON=true这一句,有个emulateJSON属性,准确意思没弄懂干嘛的,反正如果设置成false后台连参数都接不到了,全都是null。

说了这么多发现好多废话,嗯,好吧。直接说最后解决办法嘛,嗯,vue-resourse嘛,毕竟比较简单,问题也很明显了,就是设置了emulateJSON属性他会自动设置Content-Type请求头,而且比他给的api调用更靠后,so,灵机一动去他的js文件里看看咯。

找到引用js的位置,我的是这样的

找到这些js文件,打开搜索application/x-www-form-urlencoded,然后手动再后面加上;charset:utf-8

嗯。暂时OK。不知道将来打包出来会不会有其他问题。

以上是关于Vue-Resourse发送请求后台接收参数乱码问题的主要内容,如果未能解决你的问题,请参考以下文章

httpclient工具类,post请求发送json字符串参数,中文乱码处理

URL传中文参数导致乱码的解决方案之encodeURI

我要给发送请求后台传递参数如图所示,json数组中的对象后台有对应实体类,后台使用springboot如何接收?

tomcat设置utf-8编码,springMVC后台接收参数反而乱码

处理request接收参数的中文乱码的问题:

url中拼接中文参数,后台接收为乱码的问题