Servlet中请求中文乱码问题解决

造成乱码问题的原因只有一个:即客户端与服务端的字符编码不一致所导致。

tomcat默认的编码处理时ISO-8859-1的编码解析器,所以我i们需要对tomcat对获取到的数据进行处理: 

get与post的乱码处理是不一致的,当get请求时,其传递给服务器的数据是附加在URL地址之后的;而post的请求时,其传递给服务器的数据是作为请求体的一部分传递给服务器

1、使用String进行重新编码

      uname=new String(uname.getBytes("iso8859-1"),"utf-8"); 把iso8859-1编码的字符串解码成字节数组,然后重新编码成ut。

缺点:麻烦

2、使用公共配置

Post方式请求:

       在service方法中使用: req.setCharacterEncoding(“utf-8”); (获取数据之前)

Get方式请求: 

URL的参数没有使用编码(即使用了ISO-8859-1等)

上面Post方式对Get来说不好使了,应为Get的请求数据在url里面。

在tomcat服务器目录下的conf文件下找到server.xml文件,打开进 行如下配置:

 找到Connector标签

加上一个属性  useBodyEncodingForURI="true" 

配置好上面了

在获取数据之前加上 req.setCharacterEncoding(“utf-8”);就可以正常获取数据了。

我做的是公共配置,可能会造成其他的问题。

tomcat 9.0.5新特性:get方法浏览器传过来的数据在tomcate getParamete()中的编码是utf-8,所以当用get方法请求在控制台显示时,Servlet中不需要再改变中文字符的编码方式。

3、流程总结:
Servlet的使用流程:

     设置请求编码格式

     设置响应编码格式

     获取请求信息

     处理请求信息

      响应处理结果

数据流转流程:

      浏览器------>服务器------->数据库

      浏览器<------服务器<-------数据库

猜你喜欢

转载自blog.csdn.net/qq_40794973/article/details/85223012