日志及参数的乱码问题

Posted 异想天开

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了日志及参数的乱码问题相关的知识,希望对你有一定的参考价值。

一、查看系统语言

echo $LANG
显示zh_CN.UTF-8说明系统支持中文编码

二、查看系统是否有中文包

locale

三、Tomcat乱码解决

 假设编码用utf-8

 1、tomcat日志乱码

 设置系统编码,先设置系统编码vi /etc/sysconfig/i18n,默认为:

LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"

修改为:

LANG="zh_CN.UTF-8"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh"
SYSFONT="latarcyrheb-sun16"

运行source /etc/sysconfig/i18n保存设置

2、设置jvm编码

1) 从tomcat的bin目录的sh启动tomcat

在catalina.sh找到JAVA_OPTS配置为JAVA_OPTS="-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8"

注:这个参数必须在jvm启动时加上,在程序中通过设置system property的方式是没有效果的,原因是jvm启动时读取file.encoding并cache,后续只使用启动时读取的编码。 后续:

我之前直接在catalina.sh的最上方添加了JAVA_OPTS="-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8"配置
但是发现配置并不生效 日志仍为乱码
原来catalina.sh中间位置有个这样的配置JAVA_OPTS=
他又把JAVA_OPTS给置空了 怪不得配置不生效

解决方法有两种

在JAVA_OPTS=后面直接添加编码配置
在下一行添加 JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8"
推荐后面这一种 不修改原配置 添加新配置才更合理

2) 从服务中启动tomcat

如果tomcat已配置为服务 则要修改修改/etc/rc.d/init.d目录下对应的文件,假如服务为tomcat 就修改tomcat文件 修改方式同上。

3、tomcat参数的乱码问题

 在server.xml的connector中增URIEncoding="utf-8"

4、数据库乱码

url: jdbc:mysql://IP:3306/XX?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true

 

以上是关于日志及参数的乱码问题的主要内容,如果未能解决你的问题,请参考以下文章

使用RestTemplate在代码内调用POST请求的参数乱码问题

log4j日志文件名与行号显示乱码? 问号? 参数问号? 日志问号?补

jmeter中文乱码及Unicode转中文

form表单提交中文乱码(前台中文到JAVA后台乱码)问题及解决

mybatis 的 DefaultVFS 日志乱码问题

linux下 tomcat 日志乱码/中文链接404