问题描述

在使用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

成功:
image.png

打赏
  • 微信
  • 支付宝
评论
来发评论吧~
···

歌手: