问题描述
在使用Graphics2D
绘制中文时,在Windows
端正常绘制,但是上传到服务器(Ubuntu
)中运行后,会出现乱码,具体表现为中文全部用方框字符代替了。
原因分析
由于Windows中的java程序中在绘制文字时,设置了字体:
//设置字体字号
Font font = new Font("微软雅黑", Font.PLAIN, fontSize);
java
但是在Ubuntu中没有微软雅黑字体,所以导致乱码。
查看是否有这个字体可以执行如下命令:
fc-list
shell
如果没有这个命令可以先安装:
apt install fontconfig
shell
解决方法
将Windows中的字体上传到服务器,保证服务器也有这个字体即可。
具体步骤如下:
找到Windows的字体位置
Windows中字体的存放位置如下:
C:\Windows\Fonts
shell
然后在其中找到微软雅黑字体。
上传到服务器
将刚才找到的字体文件右键复制到服务器的目录中:
/usr/share/fonts/truetype/dejavu
shell
更新系统字体设置
依次执行以下命令:
cd /usr/share/fonts/truetype/dejavu/
chmod 755 * .
apt install xfonts-utils
mkfontscale
mkfontdir
reboot
shell
测试
重启完成之后,运行java程序:
nohup java -Dfile.encoding=UTF-8 -jar image-upload-0.0.1-SNAPSHOT.jar > image-upload-0.0.1-SNAPSHOT.file 2>&1 &locale
shell
成功: