CentOS上Java編譯時出現亂碼的解決方法
系統默認編碼與Java編譯器的編碼設置不一致是導致亂碼的常見原因。首先通過locale
命令查看當前系統編碼(如echo $LANG
),若結果不是UTF-8
(如zh_CN.GBK
),需修改系統編碼:
export LANG=en_US.UTF-8
、export LC_ALL=en_US.UTF-8
;/etc/locale.conf
文件,添加LANG=en_US.UTF-8
,保存后執行source /etc/locale.conf
或重啟系統使更改生效。使用javac
命令編譯時,通過-encoding
參數明確指定源文件的編碼格式(推薦UTF-8
)。例如:
javac -encoding UTF-8 YourJavaFile.java
此操作可確保編譯器正確解析源文件中的中文字符,避免因編碼不匹配導致的亂碼。
運行Java程序時,通過-Dfile.encoding
參數設置JVM的默認編碼為UTF-8
。例如:
java -Dfile.encoding=UTF-8 YourMainClass
該參數會強制JVM使用指定編碼處理程序中的字符串,解決運行時的亂碼問題。
為避免每次編譯/運行都手動指定編碼,可通過設置環境變量全局生效:
~/.bashrc
或~/.bash_profile
文件,添加以下內容:export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8"
source ~/.bashrc
使變量生效。此設置會讓所有Java進程默認使用UTF-8
編碼。確保Java源文件本身以UTF-8
編碼保存??墒褂梦谋揪庉嬈鳎ㄈ?code>vim)查看和修改文件編碼:
vim
中執行:set fileencoding
查看當前編碼;:set fileencoding=utf-8
切換編碼,然后保存文件(:wq
)。確認JDK安裝路徑正確,且JAVA_HOME
環境變量指向的JDK版本支持UTF-8
編碼。通過javac -version
查看JDK版本,確保其為最新穩定版(如JDK 11及以上),避免因舊版本JDK的編碼支持問題導致亂碼。