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

XML 文件編碼與編輯全攻略:避開亂碼陷阱

     編輯:更多程式設計知識

XML 文件常需包含中文、日文、歐洲語系等非 ASCII 字符。為確保解析器正確解讀,必須在 XML 宣告中明確指定編碼,且編輯器儲存格式必須與宣告一致,否則將出現亂碼或解析錯誤。

Windows 95/98 記事本的限制

舊版記事本無法以 Unicode (UTF-16) 格式儲存。編輯含中文的 XML 時:

  • 若 XML 宣告無 encoding,瀏覽器開啟報錯
  • 需加入 encoding="gb2312"、gbk、UTF-8 等單位元組或 UTF-8 編碼宣告
  • 絕不可使用 UTF-16、ISO-8859-1、windows-1252,會導致中文亂碼或錯誤

Windows 2000 / XP 以上記事本支援 Unicode

新版記事本可另存為 UTF-16 (Unicode) 或 UTF-8。但嚴禁「宣告編碼與實際儲存格式不符」:

儲存格式XML 宣告 encoding結果
UTF-16無宣告或 UTF-16✅ 正常 (IE5+)
UTF-16UTF-8 / windows-1252 / ISO-8859-1❌ 錯誤:編碼衝突
ANSI (單位元組)gb2312 / gbk / UTF-8✅ 正常
ANSIUTF-16❌ 錯誤:編碼衝突

兩大經典錯誤訊息解析

  1. 「文本內容中發現非法字符」:XML 含非英文字符,但用單位元組編輯器儲存且未在宣告指定編碼
  2. 「不支援從當前編碼轉換」:檔案實際編碼與 XML 宣告編碼不匹配(如 UTF-16 檔案宣告 UTF-8,或 ANSI 檔案宣告 UTF-16)

最佳實踐建議

  • 優先使用支援 Unicode 的現代編輯器(VS Code、Notepad++、Visual Studio)
  • 統一採用 <?xml version="1.0" encoding="UTF-8"?>,並以 UTF-8 無 BOM 格式儲存
  • 若必須用舊版記事本,宣告 encoding="gb2312" 並以 ANSI 儲存
  • 切勿手動修改宣告編碼而不轉換檔案實際編碼
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved