WSL2 Ubuntu GUI 图形界面中文显示乱码

3,325 阅读2分钟

在 WSL2 使用 Electron 时发现无法显示中文,所有的中文都显示为方框,但是打开启动服务的网页(windows 下的浏览器)中文又显示正常,为了解决图形界面的中文显示问题查阅了一些资料。

可能的问题:

WSL2 缺少中文字体

ls /usr/share/fonts/

如果你的 WSL2 的字体文件目录下只有 truetype 一个文件夹

ls /usr/share/fonts/truetype/

并且进入 truetype 后只有 2 个文件夹 dejavu ubuntu,很可能图形界面使用的中文字体并不包含在内。

解决方法:

安装缺少字体,或者直接暴力复制 Windows11 的所有字体到 WSL2 的字体文件目录下。
Windows11 的字体通常存放在 C:\Windows\Fonts\ 下,在 WSL2的 /usr/share/fonts/truetype/ 下新建一个目录直接全部复制过去即可。
在 WSL2 中访问 Windows 目录需要在路径前加 /mnt/,例如 /mnt/c/Windows/Fonts/

sudo mkdir -p /usr/share/fonts/windows11
sudo cp /mnt/c/Windows/Fonts/* /usr/share/fonts/windows11

一般来说,此时再打开图形界面,中文显示就是正常的。

到此已经解决了我的问题。如果没能解决你的问题,以下列出一些可供参考的方法

设置 Ubuntu 中文语言环境

  1. 安装中文语言包
sudo apt install language-pack-zh-han*
  1. 运行语言支持检查
sudo apt install $(check-language-support)
  1. 修改相关配置文件(两种方法)

方法 1:

sudo vim /etc/default/locale

替换原始内容如下:

LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:zh"
LC_NUMERIC="zh_CN"
LC_TIME="zh_CN"
LC_MONETARY="zh_CN"
LC_PAPER="zh_CN"
LC_NAME="zh_CN"
LC_ADDRESS="zh_CN"
LC_TELEPHONE="zh_CN"
LC_MEASUREMENT="zh_CN"
LC_IDENTIFICATION="zh_CN"
LC_ALL="zh_CN.UTF-8"

方法 2:

通过图形界面修改上述文件中的 LANG 字段。

sudo dpkg-reconfigure locales

使用空格键选择 en_US.UTF-8 以及 zh_CN.UTF-8,使用 TAB 键切换至 OK,再将 en_US.UTF-8 选为默认(此处选择 zh_CN.UTF-8 及修改上述文件中的 LANG 字段)。
然后重启 WSL2

  1. 修改环境变量 添加 LANG=zh_CN.UTF-8 到配置文件末尾。有两种做法,仅供参考。
echo "LANG=zh_CN.UTF-8" >> ~/.profile
echo "LANG=zh_CN.UTF-8" >> /etc/profile

WSL2 无内容显示无法操作

折腾的途中遇到 WSL2 只有光标闪烁,无内容显示也无法操作,wsl --shutdown wsl -l -v 等等指令都没有效果。

解决方法:

在启动或关闭Windows功能中,关掉适用于Linux的Windows子系统,再重新打开。重启后一切恢复正常

参考资料

问题随记 —— 【Linux】Ubuntu设置中文语言环境(WSL可用)
TS:解决win10的wsl2下Ubuntu系统里中文乱码问题(已解决)-2022.3.14
Windows Linux子系统安装:配置图形界面、中文环境、vscode
WSL 终端无内容显示无法操作(关闭开启 WSL 解决)
WSL2打开GUI软件显示方框的解决方法