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编码保存。可使用文本编辑器(如vim)查看和修改文件编码:
vim中执行:set fileencoding查看当前编码;:set fileencoding=utf-8切换编码,然后保存文件(:wq)。确认JDK安装路径正确,且JAVA_HOME环境变量指向的JDK版本支持UTF-8编码。通过javac -version查看JDK版本,确保其为最新稳定版(如JDK 11及以上),避免因旧版本JDK的编码支持问题导致乱码。