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

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

系统中文乱码

Tomcat输出日志中文乱码

系统环境

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

解决步骤:

1.安装中文语言包  

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

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

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

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

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

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

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

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

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

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

#    locale  

(“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″

#  source    /etc/sysconfig/i18n

再修改 locale.cnf配置文件

#   vim /etc/locale.conf

LANG=”zh_CN.UTF-8″

#  source   /etc/locale.conf

重启系统

# reboot

3.设置终端连接编码

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

将编码改为 UTF-8

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

# locale 

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

再次尝试编辑中文

# vim 你是猪吗

#  ls

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

4.解决Tomcat输出日志乱码

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

我们现在看看Tomcat输出日志  

进入Tomcat目录

# cd $CATALINA_HOME

#  tail -f ./logs/catalina.out

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

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

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

# ls -l ./bin/

找到 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

# vim ./bin/catalina.sh

保存退出,重启Tomcat

# ./bin/shutdown.sh

# ./bin/startup.sh

现在再查看输出日志

# tail -f ./logs/catalina.out

服务器发一次请求

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

end!   (*^-^*) 

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/222815.html<

(0)
管理的头像管理
上一篇2025-04-15 16:23
下一篇 2025-04-15 16:24

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注