有沒有辦法將 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
.
答案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)有一個博客,“把一切都整理出來”,有幾篇相關主題的貼文。當天我直接給他發了一封電子郵件,表達了其中的一些擔憂。