前言

java程序线上输出的log4j用less打开,中文乱码,无法排查问题,尝试更改服务器编码格式去解决。

网上找Linux RedHat 更改系统编码格式的方法,都是说要改/etc/sysconfig/i18n 这个文件,可我在我虚拟机RedHat7.5 和CentOS 6.5中找了半天也没找到i18n,尝试下面的修改方案后,成功修改了编码格式。

一、永久修改编码格式

永久修改服务器编码格式需要root权限。

1. 查看系统版本

在这里插入图片描述

2.查看当前编码格式
[root@localhost ~]$ locale
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=
[root@localhost ~]$ 

  
  
    3. 修改编码格式
    [root@localhost admin]# vi /etc/locale.conf
    #LANG="zh_CN.UTF-8"
    LANG="en_US.UTF-8"
    

      保存之后,执行下面语句刷新文件(避免重启服务器):

      [root@localhost admin]# source /etc/locale.conf
      
       
       
        4.查看编码
        [root@localhost admin]# locale
        LANG=en_US.UTF-8
        LC_CTYPE="en_US.UTF-8"
        LC_NUMERIC="en_US.UTF-8"
        LC_TIME="en_US.UTF-8"
        LC_COLLATE="en_US.UTF-8"
        LC_MONETARY="en_US.UTF-8"
        LC_MESSAGES="en_US.UTF-8"
        LC_PAPER="en_US.UTF-8"
        LC_NAME="en_US.UTF-8"
        LC_ADDRESS="en_US.UTF-8"
        LC_TELEPHONE="en_US.UTF-8"
        LC_MEASUREMENT="en_US.UTF-8"
        LC_IDENTIFICATION="en_US.UTF-8"
        LC_ALL=
        
         
         

          也可在开机执行脚本文件/etc/profile中设置:
          在 /etc/profile 文件中添加
          export LANG=en_US.UTF-8或者export LANG=zh_CN.UTF-8

          二、会话(临时)修改编码

          这种方式不需要root权限,但是更改只在当前session中有效,关闭连接重新登录之后,编码还是会引用/etc/locale/conf中的内容。
          在这里插入图片描述

          ————————————————

          版权声明:本文为CSDN博主「也曾满眼星河」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

          原文链接:https://blog.csdn.net/Issay_0220/article/details/112978371

          Logo

          华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

          更多推荐