Bootstrap

java中文乱码处理

中文乱码处理

乱码的本质原因是因为在不同的系统或应用之间传递数据时,使用的编码方式不同,导致接收方无法正确解析数据。

1.服务器请求数据出现乱码

如果请求数据中包含中文字符,那么在服务器端需要使用正确的编码方式来解析请求数据,否则就会出现乱码。

POST方式提交表单数据

如果使用POST方式提交表单数据时,使用以下代码设置请求编码。

request.setCharacterEncoding("UTF-8");

注意:该方法必须在读取请求参数之前进行,否则设置无效。

GET方式提交表单数据

如果使用的是GET方式提交数据,那么设置请求编码方式的方法无效,需要在URL中添加字符集参数来指定编码方式。

http://example.com/?name=张三&age=18&charset=utf-8

2.服务器响应数据出现乱码

如果响应数据中包含中文字符,那么在服务器端需要使用正确的编码方式来生成响应数据,否则就会出现乱码。在使用JSP或Servlet生成HTML响应时,可以使用以下代码来设置响应的内容类型和编码方式。

resp.setContentType("text/html;charset=utf-8");

注意:

  1. 方法必须在输出响应数据之前进行,否则设置无效。
  2. 如果响应数据不是HTML类型,那么需要将"text/html"替换成相应的内容类型,比如"application/json"等。同时,也需要将"utf-8"替换成相应的编码方式,比如"gbk"等。

以上两种情况便可以解决常见乱码问题,如果以上都设置了,仍无法解决乱码问题,还可以检查以下可能出现乱码的原因。

检查IDEA中的文件编码中的编码方式

设置→编辑器→文件编码,界面如下:
在这里插入图片描述

检查Tomcat中URIEncoding的编码格式。

在tomcat的安装目录/conf/server.xml文件中,设置元素的属性URIEncoding="UTF-8"即指定服务器对get按照UTF-8解码,要求
tomcat管理下的所有web应用要使用utf-8编码,具体代码如下:

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

在数据库url地址添加字符配置

jdbc:mysql://localhost:3306/book?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8 
;