HTTP请求中的中文乱码处理

HTTP请求中的中文乱码处理_第1张图片

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

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");

HTTP请求中的中文乱码处理_第2张图片

其他方法?

POST方式:

req.setCharacterEncoding("UTF-8");

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


GET方式:

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

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

但是该方式只对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方式。

你可能感兴趣的:(技术,java基础)