别按别的帖子改上面系统设置,
我们是要让tomcat兼容我们系统
不是让系统兼容tomcat
tomcat控制台乱码问题
在tomcat10.1.7这个版本中,修改 tomcat/conf/logging.properties中,所有的UTF-8为GBK即可
-
修改前
-
修改后
-
重启测试
sout打印乱码
- 设置JVM加载.class文件时使用UTF-8字符集
-
-Dfile.encoding=UTF-8
GET请求乱码
GET请求方式乱码分析
-
GET方式提交参数的方式是将参数放到URL后面,如果使用的不是UTF-8,那么会对参数进行URL编码处理
-
HTML中的 <meta charset='字符集'/> 影响了GET方式提交参数的URL编码
-
tomcat10.1.7的URI编码默认为 UTF-8
-
当GET方式提交的参数URL编码和tomcat10.1.7默认的URI编码不一致时,就会出现乱码
GET请求方式乱码演示
-
浏览器解析的文档的<meta charset="GBK" />
-
GET方式提交时,会对数据进行URL编码处理 ,是将GBK 转码为 "百分号码"
-
tomcat10.1.7 默认使用UTF-8对URI进行解析,造成前后端使用的字符集不一致,出现乱码
GET请求方式乱码解决
-
方式1 :设置GET方式提交的编码和Tomcat10.1.7的URI默认解析编码一致即可 (推荐)
-
方式2 : 设置Tomcat10.1.7的URI解析字符集和GET请求发送时所使用URL转码时的字符集一致即可,修改conf/server.xml中 Connecter 添加 URIEncoding="GBK" (不推荐,会导致部署到其他设备无法运行)
POST请求乱码与GET请求处理方法一致,不再赘述
响应乱码问题
响应乱码分析
-
在Tomcat10.1.7中,向响应体中放入的数据默认使用了工程编码 UTF-8
-
浏览器在接收响应信息时,使用了不同的字符集或者是不支持中文的字符集就会出现乱码
响应乱码演示
-
服务端通过response对象向响应体添加数据
-
浏览器接收数据解析乱码
响应乱码解决
-
方式1 : 手动设定浏览器对本次响应体解析时使用的字符集(不推荐)
-
edge和 chrome浏览器没有提供直接的比较方便的入口,不方便
-
-
方式2: 后端通过设置响应体的字符集和浏览器解析响应体的默认字符集一致(不推荐)
-
方式3: 通过设置content-type响应头,告诉浏览器以指定的字符集解析响应体(推荐)
来源:尚硅谷全新JavaWeb教程第86集中的笔记
https://www.bilibili.com/video/BV1UN411x7xe?p=86&vd_source=38bf13c70c43252c60c1579649f2a766