操作如下圖所示:
- 找到「控制面板」
- 點開「更改日期、時間或數字格式」
- 在彈出的「區域」控制面板項中選定「管理」標籤
- 點選「更改系統區域設置」
- 在彈出的「區域設置」對話框中勾選「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 編碼之檔案開啓。
結果顯示:可回復文件名中最後兩個漢字字符表示,但未能回復文件名中的全數文字。
网友评论