天天看點

Linux伺服器JRE中文字型設定,解決java.awt亂碼、顯示方塊問題安裝字型

雲栖号: https://yqh.aliyun.com 第一手的上雲資訊,不同行業精選的上雲企業案例庫,基于衆多成功案例萃取而成的最佳實踐,助力您上雲決策!

最近因為需要在java應用中合成曲線圖,使用了jfreechart庫,但是發現圖檔中的中文全都顯示成方塊了。

根據網絡上的經驗,在建立圖表之前,先設定主題ChartFactory.setChartTheme(standardChartTheme);

或者設定字型時用setFont(Font font),發現也不能解決問題。

後來意識到是伺服器本身缺少中文字型的問題,Linux機器一般都是沒有中文字型庫的,是以在使用java.awt相關類生成圖檔時,輸出的中文很可能顯示亂碼或者呈方塊狀。解決方案就是在伺服器啟動腳本裡,加上安裝中文字型庫的步驟:

  1. 安裝字型到系統中。
  2. 在JRE目錄下建立fonts/callback目錄。
  3. 将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

這裡可以選擇任意開源中文字型,我用了文泉譯測試。

驗證:

  1. 在改動之前先登入機器,進入目錄/usr/share/fonts,可以看到下面隻有dejavu字型庫。
  2. 在docker腳本中添加上述指令後,重新部署到伺服器上,該目錄下多了字型庫wqy-microhei 和 wqy-zenhei。
  3. 這時再觸發生成圖檔的服務,中文正常顯示。
Linux伺服器JRE中文字型設定,解決java.awt亂碼、顯示方塊問題安裝字型

雲栖号線上課堂,每天都有産品技術專家分享

立即加入圈子:

https://c.tb.cn/F3.Z8gvnK 與專家面對面,及時了解課程最新動态!

原文釋出時間:2020-03-17

本文作者:牧碼

本文來自:“

阿裡雲雲栖社群

”,了解相關資訊可以關注“