Windows バージョン 10.0.19043.1889 で WSL を有効にし、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 アプリを再インストールしました。これで問題は解決し、文字出力は今のところ問題ないようです。(もちろん、このプロセス中にすべてのデータが失われましたが、新規インストールだったので許容範囲内でした。)