將 Windows 10 的 Code Page 設定爲 UTF-8

操作如下圖所示:

  • 找到「控制面板」
  • 點開「更改日期、時間或數字格式」
  • 在彈出的「區域」控制面板項中選定「管理」標籤
  • 點選「更改系統區域設置」
  • 在彈出的「區域設置」對話框中勾選「Beta 版,使用 Unicode UTF-8 提供全球語言支持 (U)」選框
「區域設置」對話框

驗證

重新登入 Windows 後,在命令列中查看預設的碼頁(code page)

C:\Program Files (x86)\Lenovo\Lenovo Preferred Pro USB Fingerprint Keyboard Hotkey Driver>CHCP
Active code page: 65001

異常

在 WSL 中,原本可用於解壓指定 code page 的 unzip -O 行爲異常。具體表現爲解壓後的文件名係亂碼:

user@ltt-llk2:/mnt/c/Users/user/devhood/tmp$ unzip a\ \(1\).zip
Archive:  a (1).zip
  inflating: ╣╪╙┌╫Ў║├╧▀╔╧╜╠╤з╜╫╢╬┐╬│╠┐╝║╦╡─═и╓к/╣╪╙┌╫Ў║├╧▀╔╧╜╠╤з╜╫╢╬┐╬│╠┐╝║╦╡─═и╓к.pdf
  inflating: ╣╪╙┌╫Ў║├╧▀╔╧╜╠╤з╜╫╢╬┐╬│╠┐╝║╦╡─═и╓к/╕╜╝■1.╩╘╛э╔є┼·▒э─г░х20181203.doc
  inflating: ╣╪╙┌╫Ў║├╧▀╔╧╜╠╤з╜╫╢╬┐╬│╠┐╝║╦╡─═и╓к/╕╜╝■г║╧▀╔╧┐╬│╠┐╝╟┌╙ы╞╜╩▒│╔╝и▒э.xls

使用 Windows Explorer 開啓以上歸檔,同樣是文件名異常:


Windows Explorer

使用 7-Zip File Manager 開啓之,異常依舊:


7-Zip File Manager

猜想與驗證

猜想

問題所在或非於壓縮歸檔本身?

驗證

將以上文件複製到另一部電腦上完成解壓過程,文件名可回復其應有的表示。

猜想

文件名在源機器上用 GB 18030 或 GB 2312 進行編碼;而後在此 Windows 10 機器上應用了 UTF-8 作爲「當前系統區域設置」的碼頁,處理歸檔內文件名時,將前者編碼的文字當作後者形態的文字進行處理了?

驗證

用 Notepad++ 和在線編碼辨別工具進行試驗:先選中並複製一個在 Windows Explorer 中表達的歸檔內文件名,並將其以 UTF-8 貼到 Notepad++ 上作爲文本文件儲存,而後作爲 GB 2312 編碼之檔案開啓。

結果顯示:可回復文件名中最後兩個漢字字符表示,但未能回復文件名中的全數文字。

相關文獻

  • https://blog.miniasp.com/post/2016/09/27/Windows-10-Bash-Ubuntu-on-Windows
  • https://github.com/microsoft/terminal/issues/1802

你可能感兴趣的:(將 Windows 10 的 Code Page 設定爲 UTF-8)