本文涉及到三种乱码情形
- linux 显示乱码
- xshell 输入中文乱码
- java项目使用maven编译后乱码
linux 显示乱码
系统:centos 7.2
现象:文件名或者文件内容带有中文字符时,显示乱码。
原因:系统默认的的字符集为en_US.UTF-8
解决:修改系统字符集为zh_CN.UTF-8
查看系统当前字符集,linux命令行输入:
echo $LANG
临时修改方案,在命令行输入:
export LANG=zh_CN.UTF-8
长期方案,编辑/etc/locale.conf文件,将LANG的值修改为zh_CN.UTF-8
或者修改用户的配置文件 ~/.bashrc,加上该配置export LANG=zh_CN.UTF-8
重启机器, 执行reboot
命令 ,或者重新加载配置文件
以上配置的前提是系统已经安装了中文字体,那么如何知道系统是否安装了中文呢?
我们可以通过命令查看:locale -a | grep zh
,如果查看到有,则可以按上面的方式配置。
如果没有,则需要安装中文字体, 联网状态下可以执行:yum -y groupinstall chinese-support
xshell 无法输出中文
系统:win 10
现象:windows系统下通过xshell连接linux服务器,服务器有个中文文件名的文件,想要查看它,但是无法输入中文。
原因:windows系统的输入法有问题。
解决:修改windows输入法。
检查xshell设置的字符编码,设为UTF-8
打开 控制面板-> 时钟、语言和区域 -> 语言 ,除了中文输入法,其余的都删除。
该方案查询自:moralistxp的博客 ,经验证可行。
java项目文件使用maven打包后乱码
系统:win 10,centos 7.2
现象:java项目中某文件中带有中文(例如日志输出中带有中文),在windows下输出正常,显示中文,但是部署到linux中发现显示乱码。
原因:Intellig开发项目时设置的文件编码为 utf-8,但在DOS中使用maven对项目进行编译打包时,maven使用的系统默认的编码gbk,导致乱码。
解决:在编译插件中设置字符编码。
- 修改pom文件,增加如下插件:
<properties>
<java.version>1.8</java.version>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
</properties>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>${maven.compiler.encoding}</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.3</version>
<configuration>
<encoding>${maven.compiler.encoding}</encoding>
</configuration>
</plugin>