將 UTF8 設定為 Windows 7 中的預設字元編碼

將 UTF8 設定為 Windows 7 中的預設字元編碼

有沒有辦法將 Windows 7 設定為全域使用 UTF-8 作為標準?
設定每個文字編輯器都使用它真的很煩人。

答案1

簡短的答案是不,不可能

詳細地說,恐怕您在 Windows 7 中找不到全域編碼選項,可以讓您 1) 設定全域預設值,2) 您列出的所有應用程式都將遵循該預設值。

另外,我想問您要解決的問題是什麼?

由應用程式選擇是否在內部使用 unicode 來表示資料。雖然鼓勵使用 unicode,您可能永遠無法確定您的所有應用程式實際上都在內部支援它。

你什麼可以做,但是更改每個列出的應用程式的預設字元編碼:

  • 對於 Eclipse,可以設定新檔案的預設編碼視窗 > 首選項 > 常規 > 內容類型(看在 Eclipse 社群表單上發帖
  • 對於 Notepad++,請導航至設定 > 首選項 > 新文件/預設/目錄並將編碼設為UTF-8
  • 至於 Thunderbird,我很確定它已經使用 UTF-8 作為預設編碼? (看這些關於字符編碼的註釋
  • 對於 OpenOffice(和 LibreOffice),您實際上甚至不需要關心編碼,因為 OpenOffice 保存的文件是基於 XML,其中編碼是在 XML 文件內部指定的(以及UTF-8也已經是預設值)
  • 從 UTF-8 的角度來看,PowerShell 很棘手。它的預設編碼為UTF-16LE.
    • 若要將檔案從 PowerShell 輸出為 UTF-8,請參閱這個答案
    • 若要變更預設編碼,請參閱這個答案

答案2

這是不可能的,主要是因為 Windows 不允許 UTF-8 作為系統 ANSI 代碼頁,即使它確實有 UTF-8 的 ANSI 代碼頁,代碼頁 65001。造成這種情況的原因似乎有幾個:

  • 當 Unicode 剛出現時,Microsoft 決定 UCS-2 將是支援 Unicode 的最佳方式。當時Unicode是16位的。
  • Windows 為每種支援的語言提供一個 ANSI 代碼頁,不像Unix和Linux可以獨立設定語言和編碼。
  • 代碼頁 65001 並非在所有地方都有效。具體來說,它因 Windows 中的某些多字節支援而被破壞,這些支援期望多字節字元需要 1 或 2 個字節,而 UTF-8 需要 1 到 4 個位元組。這WriteFile()應用程式介面例如,在代碼頁 65001 下傳回不正確的結果,該結果會在依賴它的所有函式庫程式碼中冒泡,例如write()

已故在微軟從事國際化工作的邁克爾·卡普蘭(Michael Kaplan)有一個博客,“把一切都整理出來”,有幾篇相關主題的貼文。當天我直接給他發了一封電子郵件,表達了其中的一些擔憂。

相關內容