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应用的乱码问题。