HTTP请求中的中文乱码处理

请求中中文乱码造成的原因?

Tomcat接受请求的时候,默认使用ISO-8859-1编码。该编码只占一个字节,而中文占两个字节,所以不支持中文。

乱码解决方法?

对乱码使用ISO-8859-1解码,转成byte数组,然后对byte数组重新使用UTF-8编码。(不管是POST请求还是GET请求都行),似乎这种方法对get请求不起作用。

byte[] tomcatname=req.getParameter("name").getBytes("ISO-8859-1");
String username=new String(tomcatname,"UTF-8");

其他方法?

POST方式:

req.setCharacterEncoding("UTF-8");

该种方式必须在获取第一个参数之前设置,且只对POST请求有效。


GET方式:

重新设置Tomcat的编码方式,修改Tomcat的配置文件server.xml,修改

<Connector port="80" protocoll="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>

(默认URIEncoding="ISO-8859-1")为

<Connector port="80" protocoll="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>

但是该方式只对GET方式有效,不建议用。


所以总结起来,

post请求参数有中文,用

req.setCharacterEncoding("UTF-8");

或者

byte[] tomcatname=req.getParameter("name").getBytes("ISO-8859-1");
String username=new String(tomcatname,"UTF-8");

而get请求要改tomcat配置文件,相对于改Tomcat编码。

所以说请求要传中文尽量用POST方式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值