核心思想:统一编码
解决乱码的根本方法是:确保你的整个开发环境(从项目设置到文件保存,再到运行时)都统一使用一种编码,最推荐的就是 UTF-8。

排查与解决方案(按优先级顺序)
请按照以下步骤逐一检查和修改,每修改一项后,最好重启 MyEclipse,然后测试乱码问题是否解决。
第1步:检查并修改项目默认编码(最关键)
这是最常见也最根本的原因,项目默认编码会影响新创建文件的编码。
- 在 Package Explorer 视图中,右键点击你的项目名称,选择 Properties (属性)。
- 在弹出的窗口中,找到并点击 Resource (资源)。
- 在右侧的 Text file encoding (文本文件编码) 选项中,确保选择的是 Other,并在下拉框中选中 UTF-8。
- 点击 Apply and Close (应用并关闭)。
注意:修改此项后,只会影响新创建的文件,项目中已有的文件编码可能不会自动改变,你需要手动转换它们(见第5步)。
第2步:检查并修改JSP文件的编码
JSP 文件有自己的编码声明,必须与项目编码一致。

- 在 Package Explorer 中,双击打开一个 JSP 文件。
- 切换到 JSP 源代码视图(而不是 Design 视图)。
- 在文件的最顶部,找到
<%@ page ... %>指令。 - 确保其中包含
contentType="text/html; charset=UTF-8"这一行,如果charset不是UTF-8,请手动修改。<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>pageEncoding="UTF-8":告诉 MyEclipse 这个JSP文件本身是以UTF-8编码保存的。contentType="...; charset=UTF-8":告诉浏览器在解析这个页面时,使用UTF-8编码来显示中文。
第3步:检查并修改Java源文件的编码
-
右键点击项目 -> Properties -> Resource (和第1步一样),确保 Text file encoding 已经设置为 UTF-8,这会作为新 .java 文件的默认编码。
-
对于已经存在的 .java 文件,如果怀疑其编码不是UTF-8,可以尝试转换:
- 右键点击该 .java 文件 -> Properties。
- 在 Resource 页面,点击 Convert (Change to...) 按钮,然后选择 UTF-8,MyEclipse 会尝试将文件内容转换成UTF-8编码。
第4步:检查并修改控制台输出编码
如果你的乱码是运行程序后,在控制台(Console)打印日志时出现的,需要修改控制台的编码设置。
- 打开 Window -> Preferences (首选项)。
- 在导航栏中,找到 General -> Workspace。
- 在右侧的 Text file encoding 中,同样确保选择 Other 并设置为 UTF-8,这会影响控制台读取和显示日志的方式。
- 在控制台视图(Console View)的工具栏上,通常有一个编码选择下拉框(比如显示
GBK或ISO...),点击它,手动选择 UTF-8。
第5步:批量转换项目现有文件编码
如果你的项目是旧项目,或者从别处导入的,里面可能有很多文件是 GBK 或其他编码,手动修改太慢,可以使用 MyEclipse 的批量转换功能。

- 右键点击项目 -> Properties -> Resource。
- 点击 Other 旁边的 Configure (配置) 按钮。
- 在弹出的 File Encodings 对话框中,你可以看到项目中的文件及其编码。
- 选择需要转换的文件(选择所有
.java和.jsp文件),然后在右下角的 Encoding 下拉框中选择 UTF-8。 - 点击 OK,MyEclipse 会提示你转换文件,确认即可。
第6步:检查Tomcat(或其他服务器)的JVM启动参数
这是在服务器运行时解决乱码的终极手段,它能强制指定JVM使用UTF-8处理所有IO。
- 在 Servers 视图中,双击你的服务器(如 Tomcat v8.5 Server)打开配置。
- 在打开的编辑器中,切换到 Launch 标签页。
- 在 VM arguments (虚拟机参数) 文本框中,添加以下内容:
-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8-Dfile.encoding=UTF-8:设置JVM默认的文件编码。-Dsun.jnu.encoding=UTF-8:设置JVM用于控制台输入输出的编码。
- 点击 Apply -> Save,然后重启服务器。
最佳实践配置清单
为了避免以后再次遇到乱码问题,请遵循以下最佳实践:
- 项目创建时:创建新项目时,在向导中就指定项目编码为
UTF-8。 - 统一编码:确保以下所有地方的编码都设置为
UTF-8。- 项目默认编码:
Project Properties -> Resource -> Text file encoding。 - JSP文件编码:
<%@ page contentType="..." pageEncoding="UTF-8" %>。 - 工作空间编码:
Window -> Preferences -> General -> Workspace -> Text file encoding。 - 控制台编码:控制台视图工具栏的下拉框。
- JVM参数:
Servers -> [Your Server] -> Launch -> VM arguments中添加-Dfile.encoding=UTF-8。
- 项目默认编码:
- IDE设置:确保 MyEclipse 本身的编码设置正确。
Window -> Preferences -> General -> Content Types。- 在右侧的 Content types 列表中,展开 Text -> Java Source File。
- 在下方的 Default encoding 中设置为
UTF-8,然后点击 Update 按钮。 - 同样地,对
JSP Source File等其他文件类型也进行此操作。
其他可能的原因
如果以上方法都试过了问题依旧,可以考虑以下几点:
- 数据库连接和表编码:如果你的乱码出现在从数据库读取数据时,那么问题可能在数据库端。
- 检查数据库的
character-set-server是否为utf8mb4。 - 检查创建数据库和表时是否指定了
CHARSET=utf8mb4。 - 检查数据库连接URL字符串中是否包含了
useUnicode=true&characterEncoding=UTF-8。
- 检查数据库的
- 框架配置:如果你使用了 Spring MVC、Struts2 等框架,它们也可能有自己的编码过滤器或配置,确保这些框架的编码也设置为UTF-8。
- Spring MVC 中通常在
web.xml中配置一个CharacterEncodingFilter。
- Spring MVC 中通常在
- 操作系统和终端:如果你在 Linux/macOS 终端中运行或编译程序,请确保终端的字符编码也是UTF-8。
希望这份详细的指南能帮助你彻底解决 MyEclipse 的中文乱码问题!
