首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Windows Notepad++ 編寫 Java 同步 GitHub 亂碼終極解法:UTF-8 無 BOM + javac -encoding

     編輯:Java 相關知識

現象:Notepad++ 用 ANSI 編碼 → `javac` 不報錯、運行正常,但 **GitHub 網頁顯示亂碼**;用 UTF-8 (含 BOM) → `javac` 報錯 `illegal character: \ufeff`。

根因分析

  • **ANSI (Windows 實為 GBK)**:Java 編譯器預設按平台編碼 (GBK) 讀取源碼 → 編譯通過,但 Git 強制以 UTF-8 解碼顯示 → 中文亂碼。
  • **UTF-8 with BOM**:檔案開頭 `EF BB BF` 三字節,Java 編譯器視為非法字符 → 編譯失敗。
  • **UTF-8 無 BOM**:無 BOM 頭,Java 需顯式指定 `-encoding UTF-8` 讀取 → **編譯通過、GitHub 正常、運行正常**。

標準化流程 (一次配置,永久生效)

  1. **Notepad++ 設定預設編碼**:
    • 選單 **設置 → 偏好設定 → 新建文檔 → 編碼 → 選「UTF-8 無 BOM」** → 勾選「應用於打開的 ANSI 文件」可選。
  2. **編譯命令固定帶 encoding**:
    javac -encoding UTF-8 *.java
    # 或建議寫入 build.bat / build.sh / Maven/Gradle 配置
  3. **運行同樣指定編碼** (可選,避免控制台編碼不一):
    java -Dfile.encoding=UTF-8 MainClass

Git 端配置 (防止提交時再轉碼)

git config --global core.autocrlf false
git config --global core.quotepath false
# .gitattributes 強制文本文件 UTF-8
echo "*.java text eol=lf" > .gitattributes
echo "*.xml text eol=lf" >> .gitattributes

避坑提醒

  • **不要用 ANSI** 任何情況 (除非維護極老舊 GBK 專案且不上 GitHub)。
  • **不要用 UTF-8 with BOM** (Notepad++ 右下角編碼選單區分顯示)。
  • IDE (IntelliJ/Eclipse/VS Code) 預設即 UTF-8 無 BOM,**建議遷移至 IDE 開發**,Notepad++ 僅作應急編輯。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved