我在 Windows 版本 10.0.19043.1889 上啟用了 WSL,安裝了 Ubuntu Ubuntu 22.04.1 LTS。安裝後,WSL 設定為版本 1:
wls -l -v
NAME STATE VERSION
* Ubuntu-22.04 Running 1
然後,我將 Ubuntu 轉換為 WSL 版本 2:
wsl --set-default-version 2
wsl --shutdown
wsl --set-version Ubuntu-22.04 2
轉換到版本 2 後,Ubuntu 22.04 應用程式無法正確渲染字元:
gstef@AHERDSKGSTEF01:~$ ls
''$'\001\020''3@pu'$'\001''@8'$'\r''@'$'\036\035\006\004''@@@�'$'\002''�'$'\002\b\003\004\030\003\030\003\030\003\034\034\001\001\004''�'$'\037''�'$'\037\020\001\005'
Ubuntu 22.04 主目錄下 ls 指令的應用程式終端機輸出
不是在主目錄〜執行ls指令。如果在 Windows 磁碟機 /mnt/c/ 上執行 ls 則字元渲染正確:
gstef@AHERDSKGSTEF01:/mnt/c$ ls
ls: cannot access 'DumpStack.log.tmp': Permission denied
ls: cannot access 'hiberfil.sys': Permission denied
ls: cannot access 'pagefile.sys': Permission denied
ls: cannot access 'swapfile.sys': Permission denied
'$GetCurrent' DumpStack.log.tmp 'Program Files' SWSetup WINDOWS
'$RECYCLE.BIN' Intel 'Program Files (x86)' SYSTAG.BIN bootTel.dat
Ubuntu 22.04 應用程式在 Windows C: 磁碟機上的 ls 命令終端機輸出
我有點確定,使用 Ubuntu 22.04 和 WSL 版本 1,字元的渲染是正確的。
請注意,我的 Windows 語言設定為日語,但語言環境預設為英語,如果我理解正確的話
gstef@AHERDSKGSTEF01:~$ locale
LANG=C.UTF-8
LANGUAGE=
LC_CTYPE="C.UTF-8"
LC_NUMERIC="C.UTF-8"
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY="C.UTF-8"
LC_MESSAGES="C.UTF-8"
LC_PAPER="C.UTF-8"
LC_NAME="C.UTF-8"
LC_ADDRESS="C.UTF-8"
LC_TELEPHONE="C.UTF-8"
LC_MEASUREMENT="C.UTF-8"
LC_IDENTIFICATION="C.UTF-8"
LC_ALL=
有人知道錯誤的字元渲染是否與轉換為 WSL 2 有關或是否與區域設定有關?
預先感謝您的任何幫助。
答案1
我刪除了 Ubuntu 22.04 應用程序,將 WSL 預設為 2 wsl --set-default-version 2
,然後重新安裝了 Ubuntu 22.04 應用程式。這解決了我的問題,目前字元輸出似乎沒問題。 (當然,在此過程中我丟失了所有數據,這是我可以承受的,因為這是全新安裝。)