Linux下Tomcat中应用日志乱码

Linux上部的Tomcat服务器中部署了Java Web应用,查看日志的时候发现里面的中文全部是乱码,把文件拖拽到本地Windows上全是问号。从其他系统拽过来一个正常显示的包含中文的日志也可以正常显示,说明系统字符集是没问题的。
于是按照从系统底层到应用设置注意筛查编码设置
1. 系统编码
cat /etc/sysconfig/i18n  或  echo $LANG

显示为GBK,没问题。

2. 查看Tomcat配置文件中的编码设置
web.xml中和logging.properties
两个文件中均没有设置编码项,故应该都是默认设置。

3. JDK引用的设置
Java引用参数添加"-Dfile.encoding=GBK -Dsun.jnu.encoding=GBK"
将上面参数添加到Catalina.sh中JAVA_OPTS变量中,重启Tomcat,OK了。
### Linux环境下Tomcat启动时中文乱码解决方案 在Linux环境中,当Tomcat启动时遇到中文乱码问题,可以通过调整编码设置来解决。以下是具体的处理方法: #### 1. 配置`logging.properties`文件 对于日志输出中的乱码问题,可以修改`{CATALINA_HOME}/conf/logging.properties`文件中的编码属性。确保以下配置项存在并正确设置: ```properties java.util.logging.ConsoleHandler.encoding = UTF-8 ``` 此配置用于指定控制台的日志输出编码为UTF-8[^2]。 #### 2. 添加`setenv.sh`脚本 为了全局设定Java运行环境的编码方式,在Tomcat的`bin`目录下创建名为`setenv.sh`的脚本文件,并添加以下内容: ```bash export JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8" ``` 该参数的作用是强制将Java程序内部使用的字符集设为UTF-8,从而避免因默认编码不一致而导致的乱码问题[^4]。 #### 3. 调整`server.xml`中的URI编码 编辑位于`{CATALINA_HOME}/conf/server.xml`文件内的`<Connector>`节点,增加`useBodyEncodingForURI="true"`属性。例如: ```xml <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" useBodyEncodingForURI="true"/> ``` 这一改动能够使URL请求中的中文参数按照正确的编码方式进行解析。 #### 4. 设置系统级区域和语言变量 如果操作系统本身未正确支持中文字符,则可能导致进一步的乱码现象。通过执行以下命令确认当前系统的区域设置是否适配于中文环境: ```bash locale ``` 若发现缺少必要的本地化支持(如`zh_CN.UTF-8`),则需利用`locale-gen`工具生成对应的字符集定义: ```bash sudo locale-gen zh_CN.UTF-8 sudo update-locale LANG=zh_CN.UTF-8 ``` 完成上述操作之后重新加载shell会话或者重启服务器以应用更改[^3]。 #### 示例验证过程 假设已经完成了以上所有步骤,现在测试一个简单的HTML页面包含中文字符的情况。新建一个命名为`index.html`的文档放置到Web应用程序根路径下面: ```html <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>测试</title> </head> <body> <p>你好,世界!</p> </body> </html> ``` 访问这个网页应该能正常显示出“你好,世界!”而不会有任何异常符号替代原本应有的汉字。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值