CentOS系统的默认编码需与Java应用的编码一致(推荐UTF-8)。通过locale命令查看当前编码,若输出不是en_US.UTF-8或类似UTF-8编码,需修改系统配置:
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;-Dfile.encoding参数设置JVM默认编码,例如java -Dfile.encoding=UTF-8 YourJavaClass,或在启动脚本(如startup.sh)中添加该参数。在Java代码中,涉及文件读写、网络传输、数据库操作等场景时,需显式指定字符编码(推荐UTF-8)。例如:
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("input.txt"), StandardCharsets.UTF_8));;FileWriter writer = new FileWriter("output.txt", StandardCharsets.UTF_8);;byte[] bytes = str.getBytes(StandardCharsets.UTF_8);。若乱码仅在终端显示,需确保终端编码与系统/Java编码一致:
echo $LANG查看终端当前编码,若不是UTF-8,运行export LANG=en_US.UTF-8、export LC_ALL=en_US.UTF-8临时修改;~/.bashrc),添加上述两行命令,保存后运行source ~/.bashrc使更改生效。若Java应用使用AWT或Swing组件显示中文时乱码,需安装中文字体:
simsun.ttf)、黑体(simhei.ttf)等字体文件;/usr/share/fonts/chinese/TrueType目录(需手动创建该目录);chmod 755 *.ttf;mkfontscale、mkfontdir、fc-cache -fv;若使用Log4j、Logback等日志框架,需在配置文件中指定输出编码(UTF-8):
log4j.properties中添加log4j.appender.file.encoding=UTF-8;logback.xml的encoder标签内添加charset="UTF-8",例如:<encoder>
<charset>UTF-8</charset>
</encoder>
若Java应用连接数据库时出现乱码,需检查数据库字符集是否为UTF-8:
SHOW VARIABLES LIKE 'character_set%';,确认character_set_database、character_set_server等变量值为utf8mb4(推荐);my.cnf)或在创建数据库时指定字符集:CREATE DATABASE db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;。