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!    (*^-^*)

解决CentOS7中文乱码(包括Tomcat日志乱码)问题的更多相关文章

  1. 提升Idea启动速度与Tomcat日志乱码问题

    提升Idea启动速度与Tomcat日志乱码问题 前言 由于重装了一次Idea,所以有些设置时间就忘了,在此做个记录,以便以后忘记后可以来翻阅 Idea启动速度 一.将Idea所在的 安装文件夹 在wi ...

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

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

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

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

  4. Tomcat日志乱码解决方法

    将配置文件logging.properties所有含有UTF-8的删除

  5. IDEA配置tomcat日志乱码

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

  6. 解决websphere在aix linux下日志乱码

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

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

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

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

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

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

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

随机推荐

  1. 025 hibernate悲观锁、乐观锁

    Hibernate谈到悲观锁.乐观锁,就要谈到数据库的并发问题,数据库的隔离级别越高它的并发性就越差 并发性:当前系统进行了序列化后,当前读取数据后,别人查询不了,看不了.称为并发性不好 数据库隔离级 ...

  2. (HTTPS)-tomcat 实现 https 登录,去掉端口号

    最近项目组要给日本客户做个产品,升级服务器交由我来升级.为了测试用,想要在自己电脑上搭个服务器. 服务器需要由https登录,并且不显示端口号. 费了些劲儿,看了n多帖子,好不容易弄好了.趁在没忘记之 ...

  3. 开涛spring3(6.7) - AOP 之 6.7 通知顺序

    如果我们有多个通知想要在同一连接点执行,那执行顺序如何确定呢?Spring AOP使用AspectJ的优先级规则来确定通知执行顺序.总共有两种情况:同一切面中通知执行顺序.不同切面中的通知执行顺序. ...

  4. 基于binlog来分析mysql的行记录修改情况(python脚本分析)

          最近写完mysql flashback,突然发现还有有这种使用场景:有些情况下,可能会统计在某个时间段内,MySQL修改了多少数据量?发生了多少事务?主要是哪些表格发生变动?变动的数量是怎 ...

  5. Windows、Office系列产品精华部分集锦

    提示 有了这个帖子麻麻再也不用担心我因为四处找Microsoft家的软件和系统而四处劳累所烦恼了! 首先,你们最爱的老XP同志,XP同志虽然退休了,但是依然坚持在岗位上,向他致敬!! Windows ...

  6. 一天搞定CSS: overflow--14

    overflow:针对超出父级的内容如何显示 代码演示 <!DOCTYPE html> <html> <head> <meta charset="U ...

  7. typecho for SAE

    url:http://cloudbbs.org/forum.php?mod=viewthread&tid=22817 typecho和wordpress差不多,目前使用的用户非常之多.这里分享 ...

  8. DDD理论学习系列(5)-- 统一建模语言

    DDD理论学习系列--案例及目录 1.引言 上一节讲解了领域模型,领域模型主要是将业务中涉及到的概念以面向对象的思想进行抽象,抽象出实体对象,确定实体所对应的方法和属性,以及实体之间的关系.然后将这些 ...

  9. 编写原生JS的insertAfter函数

    DOM里有insertBefore函数,但没有insertAfter函数,所以自己编写一个该函数: function insertAfter(newElement, targetElement){ v ...

  10. Deep Q-Network 学习笔记(二)—— Q-Learning与神经网络结合使用(有代码实现)

    参考资料: https://morvanzhou.github.io/ 非常感谢莫烦老师的教程 http://mnemstudio.org/path-finding-q-learning-tutori ...