使用Graphics2D 绘制图片时中文乱码问题的解决
今天偶然发现,使用Graphics2D绘制的图片中文部分全部不能正常显示,而是显示成一个个口口口。如下图:
之前都是好好的,该部分代码未曾作过修改。怎么会变成这样了呢?
头一回遇到这种问题,一时无辙。只好上网搜索。经过排查,联想到前段时间将服务器更换为阿里云,终于明白一二。
原来我新换的服务器linux系统里没有宋体(simsun.ttf)这种字体,所有画图时所有中文都用方框来代替了。
明白的缘由,那么就是把字体补齐。我先到我电脑上把字体找到,windows电脑字体一般位于C:\Windows\Fonts中,由于里边字体太多,我用了快速检索,注意,windows上标示为simsun.ttc,参照下图:
找到以后,我把它复制到桌面,并把它重命名为simsun.ttf,也可复制到linux服务器后再重命名。
下面说说拷贝到linux服务器上走过的弯路,让后面的人有所警示或少走弯路。起初我把文件拷贝到/usr/local/java/jdk/jre/lib/fonts/(注意:这里要换成自己jdk真实的目录),然后重启服务器,执行,发现没效果。
后面参照这位大师https://blog.****.net/sinat_34797000/article/details/101107322的做法,终于奏效。
下面说说过程,进入/usr/share/fonts目录,里边原本只有dejavu和 urw-base35文件夹,里面虽然有不少字体库,然而都是西文的,因此在fonts目录下创建一个中文字体库chinese,把simsun.ttf拷贝到chinese目录下,并赋予执行权限 chmod 777 simsun.ttc
在 /usr/share/fonts/chinese 目录下执行 fc-cache -fv,安装字体到系统
执行fc-list查看字体是否安装成功,参照下图:
安装好后,重启tomcat服务器,再次执行,中文终于显示正常了。