CentOS上Java應用出現亂碼,通常由字符編碼不一致導致,可按以下步驟解決:
檢查并設置系統編碼
locale
命令,確認系統默認編碼是否為UTF-8。/etc/locale.conf
,添加 LANG=en_US.UTF-8
(或 zh_CN.UTF-8
),然后執行 source /etc/locale.conf
或重啟系統生效。配置JVM默認編碼
java -Dfile.encoding=UTF-8 -jar yourApp.jar
。System.setProperty("file.encoding", "UTF-8")
設置(需在程序啟動初期執行)。確保代碼中顯式指定編碼
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("file.txt"), StandardCharsets.UTF_8));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("file.txt"), StandardCharsets.UTF-8));
檢查數據庫編碼
SHOW VARIABLES LIKE 'character_set%'
,確認 character_set_database
等為UTF-8)。驗證終端/日志編碼
export LANG=en_US.UTF-8
臨時設置終端編碼,或修改終端配置為UTF-8。<encoder charset="UTF-8"/>
。其他注意事項
按以上步驟逐步排查,可解決大多數CentOS下Java應用的亂碼問題。