Java源代码文件需使用UTF-8编码保存(推荐),可通过文本编辑器(如VSCode、Notepad++)查看或转换编码。例如,在VSCode中点击右下角编码格式(如“GBK”),选择“保存为UTF-8”。
使用javac命令编译时,通过-encoding参数明确指定源代码文件的编码格式(如UTF-8)。示例:
javac -encoding UTF-8 YourJavaFile.java
若项目有多个源文件,可批量指定:
javac -encoding UTF-8 File1.java File2.java File3.java
若使用Maven或Gradle构建项目,需在配置文件中设置编码,确保构建过程一致。
pom.xml的<properties>中添加:<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
build.gradle中添加:tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
}
确保系统默认编码为UTF-8,避免编译或运行时因编码不匹配导致乱码。
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
/etc/locale.conf文件(需root权限),添加:LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8
保存后运行source /etc/locale.conf使设置生效,或重启终端。若系统未预生成UTF-8语言环境,需手动操作:
/etc/locale.gen文件,取消注释en_US.UTF-8 UTF-8(或zh_CN.UTF-8 UTF-8,根据需求);sudo locale-gen生成语言环境;locale命令,确认LANG、LC_ALL等变量值为UTF-8。若运行Java程序时出现乱码,可通过-Dfile.encoding参数设置JVM的默认编码:
java -Dfile.encoding=UTF-8 YourMainClass
此参数强制JVM使用UTF-8编码读取和输出字符,解决运行时乱码问题。
若乱码出现在终端输出,可能是终端字体不支持UTF-8字符。需更换支持中文/多语言的字体(如“Noto Sans CJK”),或在终端设置中调整字体:
以上方法覆盖了Debian系统下Java编译乱码的常见原因,按步骤排查即可解决问题。若仍无法解决,建议检查源代码中是否有硬编码的非UTF-8字符,或提供更详细的乱码场景进一步分析。