使用 BufferedImage 生成條形碼時(shí),需要將中文備注信息畫在條形碼圖片上,本地測(cè)試查看條形碼圖片生成正常,中文信息可以正常展示。但是發(fā)布到linux服務(wù)器后,圖片中的中文始終亂碼。遂開始排查問(wèn)題:
Graphics2D 畫布寫入文字代碼如下:
BufferedImage image;
Graphics2D g2d = image.createGraphics();
// 設(shè)置文字顏色
g2d.setColor(Color.BLACK);
// 字體、字型、字號(hào)
// g2d.setFont(new Font("微軟雅黑", Font.PLAIN, fontSize));
g2d.setFont(new Font("宋體", Font.BOLD, fontSize));
此處設(shè)置了字體,而中文亂碼原因也在此處。如果設(shè)置的字體不支持中文,或者設(shè)置的字體在部署的服務(wù)器上沒有,那么在生成圖片時(shí),中文就會(huì)亂碼展示小方框

此時(shí),需要去服務(wù)器查看:
// 查看服務(wù)器中文字體列表
fc-list :lang-zh
如果 fc-list 命令無(wú)法識(shí)別,則需先安裝fontConfig
離線安裝步驟:
1.下載安裝包 地址
fontconfig-2.13.0-4.3.el7.x86_64.rpm
ttmkfdir-3.0.9-42.el7.x86_64.rpm
搜索對(duì)應(yīng)的安裝包,選擇合適的版本下載


下載后上傳到服務(wù)器準(zhǔn)備安裝
2.安裝:
進(jìn)入服務(wù)器上安裝包所在目錄,執(zhí)行安裝命令
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.創(chuàng)建字體目錄,上傳字體文件
cd /usr/share
mkdir fonts
chmod -R 755 /usr/share/fonts
// /usr/share/fonts 是安裝fontconfig后配置文件中字體文件的默認(rèn)目錄,也可以自定義修改
// 修改字體配置文件中的文件目錄
vim /etc/fonts/fonts.conf

上傳windows本地的字體文件到服務(wù)器上的字體目錄
把C:\Windows\Fonts下的字體庫(kù)打包上傳到fonts目錄
4.刷新緩存讓字體生效(不需要重啟服務(wù)器)
fc-cache
- 驗(yàn)證字體是否生效
// 查看全部字體
fc-list
// 查看中文字體
fc-list :lang-zh
// 查看 宋體
fc-list :lang-zh |grep 宋體
5.此時(shí)去查看條形碼生成功能是否正常,如果不正常,重啟條形碼對(duì)應(yīng)的服務(wù)即可。
