一、乱码分析
- GET方式提交参数的方式是将参数放到URL后面,如果使用的不是UTF-8,那么会对参数进行URL编码处理
- HTML中的
<meta charset='字符集'/>
影响了GET方式提交参数的URL编码 tomcat10.1.7
的URI编码默认为 UTF-8- 当GET方式提交的参数URL编码和tomcat10.1.7默认的URI编码不一致时,就会出现乱码
二、乱码演示
- 浏览器解析的文档的
<meta charset="GBK" />
当 <meta charset="GBK" />
改为GBK后,不仅浏览器解析的时候字符集变为GBK了,同时这个html文件也会默认改为GBK编码,并且还影响了这个Form表单提交的时候用什么字符集对这些参数进行编码。
GET方式提交时,会对数据进行URL编码处理,是将GBK 转码为 “百分号码”,我们把这串数字看成1010即可,只不过浏览器在解析这个1010的时候,为了区分字节,夹杂了一些%处理,每一个%代表一个字节的开始,%后面的其实是用的十六方式表示的一个字节。
由于我们是使用GBK编码方式进行提交,而在GBK中,一个汉字对应两个字节,所以我们发现刚刚输入的小明中的 小
变为了 %D5%C5
、明
变为了 %C8%FD
。
也就是我们输入的参数转换为 “百分号码” 使用的字符集是GBK,紧接着Tomcat就会接收这个报文,紧接着对URI的内容进行解码,而 tomcat10.1.7
默认使用UTF-8对URI进行解析,造成前后端使用的字符集不一致,出现乱码
三、乱码解决
方式一
设置GET方式提交的编码和Tomcat10.1.7的URI默认解析编码一致即可 (推荐)
方式2
设置Tomcat10.1.7的URI解析字符集和GET请求发送时所使用URL转码时的字符集一致即可,修改 conf/server.xml
中 Connecter
添加 URIEncoding="GBK"
(不推荐)
Connector
是在配置 http/1.1协议
它的连接器