centos7语言中文乱码_解决CentOS7中文乱码(包括Tomcat日志乱码)问题

本文详细介绍了如何解决CentOS 7系统及Tomcat中出现的中文乱码问题,包括系统环境的设定、安装中文语言包、修改配置文件以及调整Tomcat的JVM参数。通过这些步骤,成功解决系统和Tomcat日志的中文显示问题。
摘要由CSDN通过智能技术生成

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.设置终端连接编码

文件->打开->选中会话->右键->属性->终端

将编码改为 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!    (*^-^*)

解决IntelliJ IDEA控制台乱码问题[包含程序运行时的log4j日志以及tomcat日志乱码]

这里使用的IntelliJ IDEA版本为[IntelliJ IDEA 14.1.4]: 一.控制台打印的程序运行时的log4j日志中包含中文乱码 在IDEA安装目录的bin目录下找到名为" ...

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

1 日志乱码: JDK引用的设置 Java引用参数添加”-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8” 将上面参数添加到Catalina.sh中JAVA ...

IDEA配置tomcat日志乱码

第一步(tomcat7/8) tomcat:找到tomcat文件夹下的conf文件夹,去修改里面的logging.properties文件 两种修改方式(第一种方法不行再用第二种): 将文件中的5个U ...

解决websphere在aix linux下日志乱码

管理控制台--->服务器--->应用程序服务器--->server1--->java和进程管理--->进程定义--->java虚拟机--->将通用jvm参数设 ...

【已解决】关于IDEA中 Tomcat 控制台打印日志中文乱码的解决

在 Idea 上面使用 Tomcat 时,发现控制台打印信息的时候,出行中文乱码问题; 可以通过以下几种解决办法 1:在-Dfile.encoding=UTF-8 在vm中设置编码方式 2.然后从Fi ...

linux服务器上tomcat日志中的中文乱码

转: 修改tomcat应用日志默认编码格式 前言 今天开发跟我说tomcat日志中的中文不能正常显示,根据以往的经验,我觉得可能跟服务器的编码有关,于是尝试各种方法,但还是没能解决问题. 后来我突然想 ...

gedit 没有preference项,使preference回归,并用命令行设置行号,解决centos7下中文乱码,text wrapping等问题

1. 最简单的,使preference选项回来: gsettings set org.gnome.settings-daemon.plugins.xsettings overrides '@a{sv} ...

centos7 中文乱码解决方法

centos7 中文乱码解决方法 标签(空格分隔): centos7 1.查看安装中文包: 查看系统是否安装中文语言包 (列出所有可用的公共语言环境的名称,包含有zh_CN) # locale -a ...

MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题 收藏 MySQL中涉及的几个字符集

MySQL中涉及的几个字符集 character-set-server/default-character-set:服务器字符集,默认情况下所采用的.character-set-database:数据 ...

随机推荐

wamp环境 安装memcache 扩展

这两天在研究tp的memcached缓存 总是遇到坑 在网上找了很多教程看终于弄出来了现在拿出来分享 首先安装memcached下载memcache压缩包 使用cmd以管理员命令去安装 E:\wamp ...

Alpha阶段第八次Scrum Meeting

情况简述 Alpha阶段第八次Scrum Meeting 敏捷开发起始时间 2016/10/31 00:00 敏捷开发终止时间 2016/10/32 00:00 会议基本内容摘要 跟助教进行了交流,明 ...

Android源码编译出错解决办法

编译环境:Ubuntu12.04 64位 Android源码:Android 4.3 以下问题是笔者亲自碰到,通过网上查询整合在一起的. 1.error while loading shared li ...

对NLP的一些新认识

其实这是老板让上交的一份总结,贴出来,欢迎朋友们批评指正. 最近看了一部分关于NLP的几篇论文,其中大部分为神经网络实现, 从基本的HMM算法实现,到LSTM实现,有很多方法可以用来处理NLP任务中的 ...

Structs2中iterator的status属性的用法

iterator标签主要是用于迭代输出集合元素,如list set map 数组等,在使用标签的时候有三个属性值得我们关注 1. value属性:可选的属性,va ...

(旧)子数涵数·Flash——路径补间

一.打开flash软件(图为flash8) 二.创建新项目->Flash文档 三.使用椭圆工具,绘制一个圆形图像(快捷键为O,很形象吧) 四.在后面若干帧中插入关键帧,并移动刚刚绘制好的图像的位 ...

[译]GotW #89 Smart Pointers

There's a lot to love about standard smart pointers in general, and unique_ptr in particular. Proble ...

Selenium WebDriver + Grid2 + RSpec之旅(二)----Grid2的配置

Selenium WebDriver + Grid2 + RSpec之旅(二) ----Grid2的配置 为什么要使用Selenium-Grid 分布式运行大规模的TestCase 能够通过一个中央节 ...

angularJs $injector

一 angularJS中几种注入方式 Spring中使用构造注入或者设值注入的方式,还需要做一些额外的操作,但是angular中只需要在需要的地方声明一下即可,类似模块的引用,因此十分方便. angu ...

PHP字符串的编码问题(转)

大家都知道,不同字符编码,其在内存占用的字节数不一样.如ASCII编码字符占用1个字节,UTF-8编码的中文字符是3字节,GBK为2个字节.   PHP 也自带几种字符串截取函数,其中常用到的就是 s ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值