1.场景
用xutils3的网络post请求,requestparams携带了一个中文,请求无结果
2.复述
用post不行,post(“汉字”)不行,post(utf-8(“汉字”))也不行。
用get可以,看了后台的写法,发现他只按iso-8859-1转码,没有按utf-8做;
3.感觉是编码问题
4. 原因找到了:
Spring MVC 是基于Servlet,在Http请求到达Servlet解析之前,GET过来的URL已经被Tomcat先做了一次URLDecode。
Tomcat对GET方式默认的URL解码结果是iso-8859-1而不是UTF-8!
5. 解决办法(后台):
decodeFName = new String(fName.getBytes(“iso-8859-1”),”utf-8”);
由于上述原因,在构造HTTP响应消息时,需要把中文字符再转成iso-8859-1。
6.还有一种办法(后台),就是配置Tomcat:
在Tomcat的conf目录下的server.xml中配置Connector的URIEconding=“UTF-8”属性即可,没有这个参数可以手动加上。