BufferedImage生成条形码,中文乱码问题排查解决

随笔7个月前发布 石頭
100 0 0

使用 BufferedImage 生成条形码时,需要将中文备注信息画在条形码图片上,本地测试查看条形码图片生成正常,中文信息可以正常展示。但是发布到linux服务器后,图片中的中文始终乱码。遂开始排查问题:
Graphics2D 画布写入文字代码如下:

BufferedImage image;
Graphics2D  g2d = image.createGraphics();
        // 设置文字颜色
        g2d.setColor(Color.BLACK);
        // 字体、字型、字号
        // g2d.setFont(new Font("微软雅黑", Font.PLAIN, fontSize));
        g2d.setFont(new Font("宋体", Font.BOLD, fontSize));

此处设置了字体,而中文乱码原因也在此处。如果设置的字体不支持中文,或者设置的字体在部署的服务器上没有,那么在生成图片时,中文就会乱码展示小方框

BufferedImage生成条形码,中文乱码问题排查解决

此时,需要去服务器查看:

// 查看服务器中文字体列表
fc-list :lang-zh
如果 fc-list 命令无法识别,则需先安装fontConfig
离线安装步骤:
1.下载安装包 地址
fontconfig-2.13.0-4.3.el7.x86_64.rpm
ttmkfdir-3.0.9-42.el7.x86_64.rpm
搜索对应的安装包,选择合适的版本下载

BufferedImage生成条形码,中文乱码问题排查解决

BufferedImage生成条形码,中文乱码问题排查解决

下载后上传到服务器准备安装

2.安装:
进入服务器上安装包所在目录,执行安装命令
rpm -ivh fontconfig-2.13.0-4.3.el7.x86_64.rpm –nodeps –force
rpm -ivh ttmkfdir-3.0.9-42.el7.x86_64.rpm –nodeps –force

3.创建字体目录,上传字体文件
cd /usr/share
mkdir fonts
chmod -R 755 /usr/share/fonts
// /usr/share/fonts 是安装fontconfig后配置文件中字体文件的默认目录,也可以自定义修改
// 修改字体配置文件中的文件目录
vim /etc/fonts/fonts.conf

BufferedImage生成条形码,中文乱码问题排查解决

上传windows本地的字体文件到服务器上的字体目录
把C:WindowsFonts下的字体库打包上传到fonts目录

4.刷新缓存让字体生效(不需要重启服务器)

 fc-cache 

  1. 验证字体是否生效

// 查看全部字体
fc-list
// 查看中文字体
fc-list :lang-zh
// 查看 宋体
fc-list :lang-zh |grep 宋体

5.此时去查看条形码生成功能是否正常,如果不正常,重启条形码对应的服务即可。

BufferedImage生成条形码,中文乱码问题排查解决

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...