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. 使用FileUtils简化你的文件操作

    前言: 在工作当中我们往往遇到很多文件的操作,我们也习惯写一些自己定义的工具类来简化文件操作,其实apache的commons的FileUtils类就是这样一个工具类,使用它能大大的简化我们对文件的操 ...

  2. java虚拟机学习-JVM内存管理:深入Java内存区域与OOM(3)

    概述 Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来. 对于从事C.C++程序开发的开发人员来说,在内存管理领域,他们即是拥有最高权力的皇帝又 ...

  3. File 常用方法

    1.判断当前文件是否封装的文件夹目录 //返回true--是,false--不是 File file =new File("C:\\Users\\mac\\Desktop\\复习.txt&q ...

  4. php系统共享模板问题

    我们在用php+html+css来写一个管理系统时,例如报名系统.投票系统,统计系统等,我们往往需要在管理后台查看每一位报名者的情况,问题接着就来了,由于比赛或者活动要求不同个,往往报名表不太一样,这 ...

  5. Java经典编程题50道之三十六

    有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数. public class Example36 {    public static void main(String[] a ...

  6. 织梦DEDECMS中的默认文件夹的名称怎么修改呢?

    1.首先找到系统配置文件,一般此文件会存放在Include目录下,文件名称为:common.inc.php.         2.打开common.inc.php,以修改模板目录templets为例, ...

  7. 反射型XSS的逆袭之路

    0×00背景 这是一次结合各自技巧的渗透过程,由于原作者的截图不多,我们只是简单叙述一下思路~ 目标是一家本地的游戏公司,起因是找到一个反射型xss,但是却被对方公司忽略,而作者身边的一个妹子也在这家 ...

  8. 关于Myeclipse不能加载已有项目的问题

    如果缺少.project文件,你可以新建一个同名项目,把Use default location 去掉,选择要加载的项目,完成

  9. oracle 11g 完全卸载方法

    网上好多卸载教程都前篇一律,但很多卸完重装都有问题,卸了几次装了几次,就特地总结整理一下 另外说一句:在完全删除(或者叫卸载)oracle时,没有必要特别意oracle提示问题,只要把oracle痕迹 ...

  10. Git添加远程报错:remote origin already exists.

    在本地创建了一个Git仓库,如何在Github创建一个Git仓库,并且让这两个仓库进行远程同步,这样Github上的仓库既可以作为备份仓库,还可以通过该仓库进行多人协作. 1.登录github,建立一 ...