温馨提示×

centos怎样解决java乱码

小樊
43
2026-10-05 16:45:18
栏目: 编程语言

在 CentOS 上解决 Java 乱码问题,通常是因为 系统字符集、Java 默认编码、文件编码、终端编码 不一致导致的。下面按常见场景一步步说明。


一、先确认系统字符集(最重要)

1. 查看当前系统编码

locale

正常应该是:

LANG=zh_CN.UTF-8
LC_ALL=zh_CN.UTF-8

2. 如果不是 UTF-8,设置为 UTF-8

sudo localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8

临时生效:

export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8

永久生效:

sudo vim /etc/locale.conf

内容:

LANG="zh_CN.UTF-8"

然后重启或重新登录。


二、Java 默认编码问题(非常常见)

1. 查看 Java 默认编码

java -XshowSettings:properties -version 2>&1 | grep encoding

如果显示:

file.encoding = ANSI_X3.4-1968

说明 Java 用的是非 UTF-8,容易乱码。


2. 启动 Java 时指定 UTF-8(强烈推荐)

java -Dfile.encoding=UTF-8 -jar app.jar

如果是 Tomcat:

export JAVA_OPTS="-Dfile.encoding=UTF-8"

三、文件本身编码问题

1. 查看文件编码

file filename.java

2. 转换文件为 UTF-8

iconv -f GBK -t UTF-8 old.java -o new.java

四、终端 / SSH 客户端乱码

1. CentOS 终端

确保终端使用 UTF-8(如 SecureCRT、Xshell、FinalShell)

  • Xshell:
    属性 → 终端 → 编码 → UTF-8
  • SecureCRT:
    Session Options → Terminal → Appearance → UTF-8

五、日志 / 控制台乱码

1. log4j / logback 指定编码

<encoder>
    <pattern>%d %msg%n</pattern>
    <charset>UTF-8</charset>
</encoder>

2. Tomcat 日志

vim conf/logging.properties

确保:

java.util.logging.ConsoleHandler.encoding = UTF-8

六、常见场景速查表

场景 解决方式
中文变 ??? -Dfile.encoding=UTF-8
文件读出来乱码 文件转 UTF-8
SSH 显示乱码 客户端设 UTF-8
Web 页面乱码 JSP / HTML 设 UTF-8
数据库乱码 JDBC 加 ?useUnicode=true&characterEncoding=UTF-8

七、Web 项目额外注意(如 Spring / Servlet)

request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");

如果你能告诉我:

  • Java 版本
  • 乱码场景(控制台 / 文件 / 网页 / 数据库)
  • CentOS 版本

我可以给你 更精准的一行解决方案。

0 踩