近期用到了动态生成二维码的功能,并且在二维码底下加文字,win下开发没有出现问题,但是部署到Linux环境下出现中文乱码。经排查之后发现代码中Font类(new Font("微软雅黑", Font.PLAIN, 35))用到了"微软雅黑"中文字体,但Centos默认没有这种字体,所以出现乱码。安装好字体后,重新启动Tomcat之后出现了:
java.lang.UnsatisfiedLinkError: sun.font.FreetypeFontScaler.initIDs(Ljava/lang/Class;)V
报错,然后多方论证确认是jdk的版本问题,我系统用的1.8.0_111,升级到1.8.0_191以后问题得以解决。此处贴出Linux安装字体步骤。
1. 在 /usr/share/fonts 目录底下创建文件夹 chinese(文件夹名称可自取)
2. 复制需要添加的字体文件 "*.ttf"或"*.ttc" 到 /usr/share/fonts/chinese
3. 移动到/usr/share/fonts/chinese目录底下,使用以下命令创建索引(生成fonts.scale和fonts.dir)
/usr/share/fonts/chinese # mkfontdir
/usr/share/fonts/chinese # mkfontscale
备注:如果命令不能正常识别请用以下方法安装。
-
yum install mkfontscale
-
yum install fontconfig
4. 刷新字体:fc-cach