彻底解决tomcat中文乱码问题的终极方案

这几天测试的兄弟发现了项目中存在乱码问题 经过排查发现是tomcat中的问题 于是在server.xml中添加了如下属性

诶?还是乱码。。。

终极解决方法在C:\apache-tomcat-8.5.30\bin\catalina.bat文件中加了如下一条语句彻底解决乱码了

注意:jvm内存大小可根据主机硬件自行设置

如果你的问题没有得到有效解决你可以打开你的tomcat找到conf文件夹下的logging.properties文件

在该文件下添加如下属性也可防止控制台乱码(引用评论,未经亲身证实,谢谢评论支持) 

java.util.logging.ConsoleHandler.encoding = GBK

附加:如果你使用了GBK汉字内码扩展规范依旧无效可以尝试换成UTF-8(GBK规则包含全部中文字符,
UTF-8是针对Unicode的一种可变长度字符编码。它可以用来表示Unicode标准中的任何字符)

### 如何解决 Tomcat 9.0 中的中文乱码问题 #### 修改Tomcat默认语言环境 为了防止由于默认语言环境不同而导致的乱码,在`conf`目录下的`catalina.bat`文件中设置`LANG=zh_CN`,这有助于确保整个Tomcat服务的语言环境统一为中文环境[^1]。 #### 设置请求参数编码 针对请求参数可能出现的乱码情况,可以在web应用的部署描述符(web.xml)里加入如下过滤器配置来强制指定POST请求使用的字符集为UTF-8: ```xml <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ``` 对于GET请求,则需调整Tomcat自身的URI编码属性。编辑`server.xml`内的Connector标签,增加或修改URIEncoding="UTF-8"属性值[^2]。 #### 调整响应内容编码 为了避免响应内容产生的乱码现象,应该确认所有的JSP页面顶部均含有正确的page指令声明,指明所采用的内容类型及其对应的字符集,例如: ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8的信息,可通过Java代码动态设定response.setContentType()方法实现这一点。 #### 配置IDEA开发环境中Tomcat的相关设置 在使用IntelliJ IDEA集成开发工具时,要特别注意项目内部以及外部依赖项的一致性。具体来说就是保证IDEA本身的控制台输出、源文件保存格式均为UTF-8;另外还需关注构建路径下META-INF/MANIFEST.MF清单文件内是否有Manifest-Version: 1.0\nSealed: false\nCreated-By: Apache Maven\nBuild-Jdk: 版本号\n这些必要的元数据说明,并且保持与实际编译环境相匹配[^3]。 #### 处理日志记录中的乱码 最后一步是对日志系统的优化。进入`$CATALINA_HOME/conf/logging.properties`位置找到并更改`.level=INFO`这一行之前添加一行新的定义:`java.util.logging.ConsoleHandler.encoding = UTF-8`,从而使得所有通过标准错误流打印出来的调试信息都能按照预期显示正常汉字而不是问号或其他异常符号[^5]。
评论 82
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值