Tomcat GET请求中文乱码根因解析与实战解法 首先明确核心判断:GET请求中文出现乱码,80%的情况并非编码未设置,而是整个请求链路中三个环节各自按不同规则解码。浏览器编码、服务器connector解码、Servlet参数解析——只要其中一个与另外两个不一致,乱码便会发生。 表单提交后中文变为
HTML表单URL编码服务端解密乱码排查流程
作者:技术拾光
时间:2026-06-27
浏览:605
文章目录
Tomcat GET请求中文乱码根因解析与实战解法
首先明确核心判断:GET请求中文出现乱码,80%的情况并非编码未设置,而是整个请求链路中三个环节各自按不同规则解码。浏览器编码、服务器connector解码、Servlet参数解析——只要其中一个与另外两个不一致,乱码便会发生。

表单提交后中文变为乱码,并非编码设置错误,而是整个链路中至少有三个环节各自按不同规则解码——浏览器URL编码、服务器connector解码、Servlet参数解析,三者不统一就必然出现错误。
GET请求参数在地址栏显示 %E4%B8%AD%E6%96%87,但服务端拿到的是
这是典型的Tomcat默认使用ISO-8859-1解码URL造成的结果。浏览器(Chrome/Firefox)默认使用UTF-8编码中文,拼入URL后变为%E4%B8%AD%E6%96%87,但Tomcat 8+的connector默认仍使用ISO-8859-1解码这些字节,导致错误还原。
- 必须在$CATALINA_HOME/conf/server.xml中修改connector标签,显式添加URIEncoding="UTF-8"(注意不是encoding,也不是useBodyEncodingForURI)
- 不要写成URIEncoding="utf-8"或URIEncoding="UTF8",只识别UTF-8(带短横线)
- 修改后需重启Tomcat方可生效;Spring Boot内嵌Tomcat需通过server.tomcat.uri-encoding=UTF-8配置
- 如果页面本身使用GBK编码(极为少见),则应设为URIEncoding="GBK",同时前端涓庡悗绔
实用工具推荐
电子包浆
使用 ›绿化、压缩、噪点和虚拟水印,自由调节做旧程度。
图片压缩
使用 ›选择画质和输出格式,预览压缩前后的大小。
相关文章