我在我的 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 App 无法正确渲染角色:
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 App 终端在主目录中输出 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 App 终端在 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 应用程序。这解决了我的问题,字符输出目前似乎没问题。(当然,在这个过程中我丢失了所有数据,这是我可以承受的,因为这是全新安装。)