問題描述
以下代碼在,在本地測試時 ,可以正常輸出中文字符的圖片,但部署到線上時中文亂碼
// 獲取Graphics2D對象以支持更多繪圖功能
Graphics2D g2d = combined.createGraphics();
// 示例字體、樣式和大小
Font font = new Font("微軟雅黑", Font.PLAIN, 30);
g2d.setFont(font);
g2d.setColor(Color.BLACK); // 文字顏色
g2d.drawString("中文字符串", textX, textY);
查了一圈 問題可能是以下兩條
- 字體庫不完整
- 編碼設置不正確
解決方案
針對問題對代碼進行了如下修改:
????????字體庫不完整
- 確保你的服務器安裝了包含中文字符的字體,例如Noto Sans CJK SC(簡體中文)或Noto Sans CJK TC(繁體中文)。在Ubuntu上,可以使用apt-get命令安裝:
sudo apt-get install fonts-noto-cjk
- 在Java代碼中指定支持中文的字體。如果你已安裝了Noto Sans CJK,可以修改setFont方法:
Font font = new Font("Noto Sans CJK SC", Font.PLAIN, 30);
????????編碼設置不正確
在Java程序啟動時添加 -Dfile.encoding=UTF-8 參數,確保系統默認編碼是UTF-8
java -Dfile.encoding=UTF-8 -jar your_program.jar
按上述操作后,問題解決