Maven 下載依賴 JAR 並附帶源碼(-sources.jar)後,Eclipse 打開源碼文件顯示中文註釋亂碼(如 涓婁竴娆″湪绾挎ā鍧囧悗),嚴重影響閱讀第三方庫源碼、調試排查問題。本文提供「工作空間編碼、內容類型編碼、項目專屬編碼」三步走徹底解決方案,並深度解析亂碼產生根因。
Window → Preferences → General → Workspace → Text file encoding,默認往往是系統編碼(Windows 下 GBK,Linux/Mac 下 UTF-8)。Preferences → General → Content Types → Text → Java Source File → Default encoding,針對 *.java 文件的具體解碼規則。亂碼發生邏輯:Eclipse 讀取 .java 源碼文件時,按「內容類型編碼 > 工作空間編碼 > 系統編碼」優先級選擇解碼器。若源碼實為 UTF-8,但 Eclipse 用 GBK 解碼,中文字符(3 字節 UTF-8)被誤解為 2 個 GBK 字符,產生亂碼。
Window → Preferences → General → WorkspaceDefault (GBK) 改為 Other: UTF-8
Window → Preferences → General → Content TypesText → Java Source FileUTF-8
Other: UTF-8Content Types 面板為對應類型設置 UTF-8。修改後必須重啟 Eclipse,已打開的編輯器標籤頁需關閉重開才能重新按新編碼解碼顯示。
Maven → Download Sources(若未下載)。Maven Dependencies → 打開任意帶中文註釋的源碼類(如 com.fasterxml.jackson.core.JsonParser)。
3. 確認中文註釋正常顯示,無亂碼。
4. 檢查 Project → Properties → Resource 顯示編碼為 UTF-8。
在 pom.xml 統一規範編譯編碼,防止編譯時中文常量亂碼:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<source>11</source>
<target>11</target>
<encoding>UTF-8</encoding> <!-- 強制編譯讀取源碼編碼 -->
<compilerArgs>
<arg>-Xlint:unchecked</arg>
</compilerArgs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
| 現象 | 原因 | 解決 |
|---|---|---|
| 設置後仍亂碼 | 未重啟 Eclipse / 未關閉重開編輯器標籤頁 | 重啟 Eclipse,關閉所有編輯器重開 |
| Properties 文件中文亂碼 | Properties 規範要求 ISO-8859-1,IDE 顯示轉義 | 使用 native2ascii 轉換,或 IDE 設置 *.properties 內容類型編碼為 UTF-8(IDEA 原生支持) |
| XML 文件中文亂碼 | XML 頭聲明 encoding="GBK" 但實際 UTF-8 |
統一 XML 頭聲明 encoding="UTF-8",IDE 內容類型設置 UTF-8 |
| 控制台輸出中文亂碼 | 運行配置編碼與控制台編碼不一致 | Run Configurations → Common → Encoding: UTF-8;JVM 參數 -Dfile.encoding=UTF-8 |
Maven 源碼中文亂碼本質是文件實際編碼與 IDE 解碼編碼不匹配。通過「工作空間 UTF-8 + Java Source File 內容類型 UTF-8 + 項目級 UTF-8 + Maven 編譯插件 UTF-8 + 重啟 Eclipse」五重保障,可徹底根治。建議團隊將此配置納入開發環境標準化文檔,新成員入職即配置,避免反復踩坑。