雲栖号: https://yqh.aliyun.com 第一手的上雲資訊,不同行業精選的上雲企業案例庫,基于衆多成功案例萃取而成的最佳實踐,助力您上雲決策!
最近因為需要在java應用中合成曲線圖,使用了jfreechart庫,但是發現圖檔中的中文全都顯示成方塊了。
根據網絡上的經驗,在建立圖表之前,先設定主題ChartFactory.setChartTheme(standardChartTheme);
或者設定字型時用setFont(Font font),發現也不能解決問題。
後來意識到是伺服器本身缺少中文字型的問題,Linux機器一般都是沒有中文字型庫的,是以在使用java.awt相關類生成圖檔時,輸出的中文很可能顯示亂碼或者呈方塊狀。解決方案就是在伺服器啟動腳本裡,加上安裝中文字型庫的步驟:
- 安裝字型到系統中。
- 在JRE目錄下建立fonts/callback目錄。
- 将Linux系統的字型目錄作為JRE下面的字型目錄連接配接。
對應Docker指令:
安裝字型
RUN yum -y install wqy-microhei-fonts wqy-zenhei-fonts
RUN mkdir -p /opt/xxx/java/jre/lib/fonts/fallback
RUN ln -s /usr/share/fonts /opt/xxx/java/jre/lib/fonts/fallback
這裡可以選擇任意開源中文字型,我用了文泉譯測試。
驗證:
- 在改動之前先登入機器,進入目錄/usr/share/fonts,可以看到下面隻有dejavu字型庫。
- 在docker腳本中添加上述指令後,重新部署到伺服器上,該目錄下多了字型庫wqy-microhei 和 wqy-zenhei。
- 這時再觸發生成圖檔的服務,中文正常顯示。

雲栖号線上課堂,每天都有産品技術專家分享
立即加入圈子:
https://c.tb.cn/F3.Z8gvnK 與專家面對面,及時了解課程最新動态!
原文釋出時間:2020-03-17
本文作者:牧碼
本文來自:“
阿裡雲雲栖社群”,了解相關資訊可以關注“
”