乱码问题产生的根本原因:
设置项目文件的字符集要使用一个支持中文的字符集
Global Encoding
全局字符集UTF-8
当前视图文件的字符集通过
<meta charset="UTF-8">
来告知浏览器通过什么字符集来解析当前文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
主页
</body>
</html>
在tomcat10
和tomcat9
版本中,
修改 tomcat/conf/logging.properties
中,
所有的UTF-8
为GBK
即可
sout乱码问题,设置JVM
加载.class
文件时使用UTF-8
字符集
-Dfile.encoding=UTF-8
GET
方式提交参数的方式是将参数放到URL后面,如果使用的不是UTF-8
,那么会对参数进行URL
编码处理<meta charset='字符集'/>
影响了GET方式提交参数的URL编码UTF-8
GET
方式提交的参数URL编码
和tomcat10/9默认的URI编码
不一致时,就会出现乱码<meta charset="GBK" />
GET
方式提交时,会对数据进行URL编码处理 ,是将GBK
转码为 “百分号码”UTF-8
对URI进行解析,造成前后端使用的字符集不一致,出现乱码
- 设置GET方式提交的编码和Tomcat10.1.7的URI默认解析编码一致即可 (推荐)
POST请求
将参数放在请求体
中进行发送<meta charset="字符集"/>
的影响<meta charset="字符集"/>
的影响方法一:
请求时,使用UTF-8字符集提交请求体 (推荐)
方法二:后端在获取参数前,设置解析请求体使用的字符集和请求发送时使用的字符集一致 (不推荐)
通过设置content-type响应头,告诉浏览器以指定的字符集解析响应体(推荐)
resp.setContentType("text/html;charset=UTF-8");
比较老的Tomcat 两行设置都写。