ubuntu中文支持需三步:生成zh_cn.utf-8 locale(编辑/etc/locale.gen并sudo locale-gen)、安装noto sans cjk等中文字体并sudo fc-cache -fv刷新缓存、在终端和浏览器中正确配置utf-8编码及中文字体。

Ubuntu 默认安装不包含完整中文支持,终端和浏览器乱码不是字体没装全,而是 locale 未生成、语言环境未激活、或字体缓存未更新——三者缺一不可。
确认并生成 zh_CN.UTF-8 locale
很多用户跳过这步直接装字体,结果终端仍显示 。Ubuntu 的 locale 必须显式生成,不能只靠安装语言包就自动启用。
- 运行
locale -a | grep zh_CN,若无输出,说明zh_CN.UTF-8未生成 - 编辑
/etc/locale.gen,取消注释这一行:zh_CN.UTF-8 UTF-8 - 执行
sudo locale-gen,完成后验证:locale -a | grep zh_CN应返回zh_CN.utf8 - 设为系统默认(可选但推荐):
sudo update-locale LANG=zh_CN.UTF-8
安装中文字体并更新缓存
仅安装 fonts-wqy-microhei 或 fonts-wqy-zenhei 不够,现代网页和终端需要 Noto Sans CJK 或思源黑体等 OpenType 字体支持 emoji 和扩展汉字区。
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
- 安装基础字体:
sudo apt install fonts-wqy-microhei fonts-wqy-zenhei - 推荐补充:
sudo apt install fonts-noto-cjk fonts-noto-color-emoji - 强制刷新字体缓存:
sudo fc-cache -fv(-f强制重建,-v显示过程,别省略) - 验证是否生效:
fc-list :lang=zh应列出多个中文字体路径
修复终端(GNOME Terminal / Konsole)乱码
即使 locale 和字体都正确,终端仍可能用错编码或 fallback 字体。关键是让终端明确使用 UTF-8 并指定中文字体。
- GNOME Terminal:设置 → 配置文件 → 文本 → 字体 → 取消勾选“使用系统等宽字体”,手动选择
Noto Sans CJK SC或WenQuanYi Micro Hei - 检查当前终端编码:
echo $LANG应输出zh_CN.UTF-8;若为C或POSIX,需在~/.bashrc或~/.profile中添加export LANG=zh_CN.UTF-8并重载 - 避免 tmux/screen 内乱码:在
~/.tmux.conf加set -g default-shell /bin/bash,并确保其子 shell 继承了 LANG
解决 Firefox / Chrome 网页中文显示异常
浏览器不读系统 locale,它依赖 fontconfig fallback 规则和自身字体设置。常见现象是网页部分汉字显示为空方块或英文字体替代。
- Firefox:地址栏输入
about:config→ 搜索font.name-serif.zh-CN,双击修改为Noto Sans CJK SC(或WenQuanYi Micro Hei);同理设置font.name-sans-serif.zh-CN和font.name-monospace.zh-CN - Chrome/Chromium:不提供界面配置,靠 fontconfig。确保
/etc/fonts/conf.d/65-nonlatin.conf已启用(默认已链接),且fc-match -s sans:lang=zh返回的是中文字体 - 若仍显示异常,临时测试:新建用户目录
mkdir -p ~/.fonts && cp /usr/share/fonts/truetype/noto/NotoSansCJKsc-Regular.otf ~/.fonts/ && fc-cache -fv
最容易被忽略的是 locale 生成后未重启终端或未重载 shell 环境变量——改完 /etc/locale.gen 或 ~/.bashrc 后,新开终端窗口或运行 source ~/.bashrc 才生效。字体缓存不加 -f 参数常导致旧缓存残留,必须强制刷新。










