1、问题描述
在使用以下命令:
java -jar -Djava.awt.headless=false 运行jar包的全路径
启动一个基于Swing的java程序时,产生了中文变成小方块、无法识别的问题。
2、原因分析
当在虚拟机中安装新的操作系统时,由于系统的默认设置中可能不包含中国字符集,您可能需要手动安装适合中文显示的字体,需要将Windows上的中文字体上传到虚拟机中。
3、解决方案
首先需要下载fontconfig,该命令可以管理系统中的字体。
3.1、下载fontconfig
yum下载:
yum install fontconfig
repotrack下载:
repotrack --download_path=/opt/temp/fontconfig fontconfig
3.2、安装fontconfig
yum下载无需安装。使用repotrack需要将安装包上传到需要配置环境的虚拟机上,本文在/opt/temp/目录路径下,执行rpm -Uvh *.rpm --force --nodeps
。
mkdir /opt/temp/fontconfig
cd /opt/temp/fontconfig
rpm -Uvh *.rpm --force --nodeps
3.3、查看中文字体
安装完毕后,使用命令 fc-list :lang=zh
用于列出系统中已安装的支持中文的字体。
fc-list :lang=zh
发现新系统没有任何中文字体。
3.4、拷贝字体
首先找到windows下的Fonts目录(C:\Windows\Fonts);
将该目录下的字体拷贝,上传到虚拟机上。并在虚拟机中创建如下中文字体路径(目录名自定义):
mkdir -p /usr/share/fonts/chinese
将字体内容拷贝到/usr/share/fonts/chinese 目录下:
给文件夹添加权限:
chmod 755 -R /usr/share/fonts/chinese
3.5、编辑配置文件
vi /etc/fonts/fonts.conf
将中文字体所在路径加进去:
<dir>/usr/share/fonts/chinese</dir>
保存后,最后刷新字体缓存
fc-cache # 刷新字体缓存
fc-list # 查看字体列表
3.6、运行程序验证
最后再次运行jar指令,可以发现解决了中文乱码问题。