阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS7中文语言乱码以及Tomcat日志中文乱码问题解决

153次阅读
没有评论

共计 2018 个字符,预计需要花费 6 分钟才能阅读完成。

Linux 系统中文语言乱码,是很多小伙伴在开始接触 Linux 时经常遇到的问题,而且当我们将已在 Wndows 部署好的项目搬到 Linux 上运行时,Tomcat 的输出日志中文全为乱码(在 Windows 上正常),看着非常心塞,那么我们应该怎么解决呢?

CentOS7 中文语言乱码以及 Tomcat 日志中文乱码问题解决

系统中文乱码

CentOS7 中文语言乱码以及 Tomcat 日志中文乱码问题解决

Tomcat 输出日志中文乱码

系统环境

  • CentOS 7.0 64 位
  • jdk-8u11-linux-x64.
  • apache-tomcat-8.5.16

解决步骤:

1. 安装中文语言包  

先查看系统是否有安装中文语言包  

# locale -a(列出所有可用的公共语言环境的名称)

CentOS7 中文语言乱码以及 Tomcat 日志中文乱码问题解决

若发现以上几项,说明系统已安装中文语言包,无需再安装,那这几项代表什么意思呢?

{语言代号}_{国家代号}.{字符集}

zh 是中文的代号、CN 是中国的代号、gb18030,gb2312,utf8 是语言字符集

那么每一项可以通俗理解为“你是说中文的,你在中国,语言字符集是 gb18030/gb2312/utf8”

如果没有发现以上几项,则手动安装中文语言包

# yum install kde-l10n-Chinese(大概 11M)

2. 修改 i18n 国际化和 locale.conf 本土化配置文件

在修改配置文件之前,我们先看看当前系统语言环境

#    locale  

CentOS7 中文语言乱码以及 Tomcat 日志中文乱码问题解决

(“en_US.UTF-8″ 按照上面的内容可以理解为“你说英语,你在美国,语言字符集为 UTF-8”)

每项的意思分别为 :

LANG: 当前系统的语言

LC_CTYPE:语言符号及其分类

LC_NUMERIC:数字

LC_COLLATE:比较和排序习惯

LC_TIME:时间显示格式

LC_MONETARY:货币单位

LC_MESSAGES:信息主要是提示信息, 错误信息, 状态信息, 标题, 标签, 按钮和菜单等

LC_NAME:姓名书写方式

LC_ADDRESS:地址书写方式

LC_TELEPHONE:电话号码书写方式

LC_MEASUREMENT:度量衡表达方式

LC_PAPER:默认纸张尺寸大小

LC_IDENTIFICATION:对 locale 自身包含信息的概述

LC_ALL:优先级最高变量,若设置了此变量,所有 LC_* 和 LANG 变量会强制跟随它的值

我们看到虽然安装了中文语言包但本机的语言环境并不是中文,先修改 i18n 配置文件

#    vim /etc/sysconfig/i18n

添加如下两行代码

LANG=”zh_CN.UTF-8″
LC_ALL=”zh_CN.UTF-8″

CentOS7 中文语言乱码以及 Tomcat 日志中文乱码问题解决

#  source    /etc/sysconfig/i18n

再修改 locale.cnf 配置文件

#   vim /etc/locale.conf

LANG=”zh_CN.UTF-8″

CentOS7 中文语言乱码以及 Tomcat 日志中文乱码问题解决

#  source   /etc/locale.conf

重启系统

# reboot

3. 设置终端连接编码

文件 -> 打开 -> 选中会话 -> 右键 -> 属性 -> 终端(我用的终端连接工具是 Xshell,其它连接工具更改编码方式请自行百度)

将编码改为 UTF-8

CentOS7 中文语言乱码以及 Tomcat 日志中文乱码问题解决

重新连接,再查看当前系统语言环境

# locale 

CentOS7 中文语言乱码以及 Tomcat 日志中文乱码问题解决

发现系统语言环境已经成功改为“zh_CN.UTF-8”

再次尝试编辑中文

# vim 你是猪吗

CentOS7 中文语言乱码以及 Tomcat 日志中文乱码问题解决

#  ls

CentOS7 中文语言乱码以及 Tomcat 日志中文乱码问题解决

SUCCESS!至此,系统中文乱码问题已解决。

4. 解决 Tomcat 输出日志乱码

既然系统中文乱码已经解决了,那么 Tomcat 输出日志中文乱码会不会也解决了呢?

我们现在看看 Tomcat 输出日志

进入 Tomcat 目录

# cd $CATALINA_HOME

#  tail -f ./logs/catalina.out

CentOS7 中文语言乱码以及 Tomcat 日志中文乱码问题解决

很遗憾,Tomcat 日志中文还是乱码。

分析:既然系统已经不会出现中文乱码,证明系统语言环境是正常的,但是 Tomcat 日志还会出现中文乱码,说明是 Tomcat 内部的问题,网上查了一些资料,知道是 JVM(Java Virtual Machine)

java 虚拟机所用的字符集与系统所用的字符集不一致造成的,知道原因,问题就好解决了,可以通过配置 JVM 的启动参数来达到修改 JVM 所使用字符集的目的。

# ls -l ./bin/

CentOS7 中文语言乱码以及 Tomcat 日志中文乱码问题解决

找到 daemon.sh 和 catalina.sh   分别加入以下代码:

JAVA_OPTS=”$JAVA_OPTS -Djavax.servlet.request.encoding=UTF-8 -Dfile.encoding=UTF-8 -Duser.language=zh_CN -Dsun.jnu.encoding=UTF-8″

# vim ./bin/daemon.sh

CentOS7 中文语言乱码以及 Tomcat 日志中文乱码问题解决

# vim ./bin/catalina.sh

CentOS7 中文语言乱码以及 Tomcat 日志中文乱码问题解决

保存退出,重启 Tomcat

# ./bin/shutdown.sh

# ./bin/startup.sh

现在再查看输出日志

# tail -f ./logs/catalina.out

向服务器发一次请求

CentOS7 中文语言乱码以及 Tomcat 日志中文乱码问题解决

Tomcat 输出日志中文正常显示。

end!   (*^-^*) 

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-07/145572.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2018字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中