從同事分享茶包學到新知識,中文版 Windows 2019 有個新的 Beta 版選項 - 「使用 Unicode UTF-8 提供全球語言支援 / Use Unicode UTF-8 for worldwide language support」:

這個選項將影響幾項 Registry 設定 - HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage 的 ACP (ANSI Code Page)、OEMCP (OEM Code Page)、MACCP (Macintosh Code Page),決定不支援 Unicode 程式(或 API) 要使用什麼語言編碼解析資料。

實際觀察,繁體中文 Windows 原本設定為:

勾選「使用 Unicode UTF-8 提供全球語言支援」後,三者都會變成 65001:(註:需重開機才會套用更新 Windows 行為)

講到 65001,很多人應該馬上想到 chcp 65001。沒錯,設定後相當於 Cmd 或 PowerShell 一開啟就已 chcp 65001,預設為 UTF-8 編碼。

實測開個 cmd,輸入 echo 中文測試 > test.txt,寫入的檔案編碼就是 UTF-8。

而上回提到的 PowerShell 轉存 git 輸出到文字檔中文變亂碼問題也不藥而瘉:

事情不能只看光明面,若系統仍有 BIG5 編碼檔案,狀況就反轉了,type big5.txt 會得到亂碼,需 chcp 950 才會正常;而記事本(Notepad)及一些非 Unicode 程式,開啟 BIG5 文字檔也會以亂碼收場:

同樣的設定 Windows 10/11 也有,故我們可視需要將 Windows 預設非 Unicode 語系由 BIG5 換成 UTF-8。但依我的經驗,除非是任務單純的伺服器環境,現階段日常生活不時會接觸到 BIG5 檔案,而且我們也已習慣需要 UTF-8 時手動切換。故可能得等未來 BIG5 文件數量更少一些,這個選項才會好處大於困擾。


Comments

# by Aaron

經測試pl/sql developer讀取oracle varchar格式存中文的,顯示也會變亂碼。

Post a comment