网络请求post get 中文参数报错

来源:互联网 发布:三国杀 银两武将 知乎 编辑:程序博客网 时间:2024/06/01 10:09

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”属性即可,没有这个参数可以手动加上。

0 0
原创粉丝点击