终端中文显示方框是“有编码、无字体”现象,需先运行fc-list :lang=zh确认中文字体是否加载,若为空则安装noto sans cjk sc等字体并执行fc-cache -fv,再检查lc_all是否被设为c导致禁用locale特性。

终端显示中文为方框,先查字体是否加载
方框(□□□)是典型的“有编码、无字体”现象:系统知道这是 UTF-8 中文,但渲染时找不到能画出这些字形的字体文件。别急着改 LANG,先确认字体链是否通。
- 运行
fc-list :lang=zh—— 如果没输出或只有极少几行,说明中文字体压根没装或没注册 - 常见可用字体名:
Noto Sans CJK SC、WenQuanYi Zen Hei、DejaVu Sans(部分版本带简体支持) - 若
fc-list为空,可直接拷 Windows 字体(如msyh.ttc、simsun.ttc)到/usr/share/fonts/truetype/,再执行fc-cache -fv - GNOME Terminal / Konsole 等需在「首选项→字体」里手动选一个含中文的字体,不能只靠自动 fallback
locale 正确但还是方框,检查 LC_ALL 是否被覆盖
LC_ALL 是最高优先级环境变量,一旦设为 C 或空值,会直接禁用所有 locale 特性(包括 UTF-8 字符宽度判断和字体匹配逻辑),导致方框而非问号。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 运行
locale,重点看LC_ALL值 —— 如果是C或未设置,问题就在这里 - 临时修复:
export LC_ALL=zh_CN.UTF-8(前提是locale -a | grep zh_CN.utf8有输出) - 永久修复:检查
~/.bashrc、/etc/environment、/etc/locale.conf,删掉或注释掉类似export LC_ALL=C的硬编码 - SSH 连接时,客户端可能传入
LC_ALL=en_US.UTF-8覆盖服务端设置,此时需在/etc/ssh/sshd_config中注释掉AcceptEnv LANG LC_*
用 Windows 字体快速救急,但注意 .ttc 文件要拆
直接复制 C:\Windows\Fonts\msyh.ttc 到 Linux 后,fc-cache 可能无法识别 TTC(TrueType Collection)中的子字体,导致部分字重(如粗体)失效,最终仍出方框。
- 先用
fontforge或ttfdump拆分 TTC:例如ttfdump msyh.ttc | grep "FontName"查子字体名,再用fontforge -lang=py -script extract_font.py msyh.ttc(需写脚本) - 更简单做法:只复制单个 TTF(如
simhei.ttf、simkai.ttf),它们天然兼容 Linux 字体引擎 - 拷完务必运行
sudo fc-cache -fv,且确认输出里有"/usr/share/fonts/truetype/..."被扫描到 - 验证是否生效:
fc-match -s "SimHei" | head -3应返回真实路径和 fontconfig 匹配结果
Java/Python 程序里中文变方框,不是系统问题
即使终端和系统 locale 全对,Java 或 Python 子进程仍可能因启动参数缺失而用错编码,导致其输出的中文无法被终端正确映射到字体,表现为方框。
- Java:必须加
-Dfile.encoding=UTF-8,仅设LANG不起作用;Spring Boot 还需确保spring.http.encoding.charset=UTF-8 - Python:
sys.stdout.encoding可能仍是ANSI_X3.4-1968,需在启动前设环境变量PYTHONIOENCODING=utf-8 - Qt 程序(尤其 Qt5):需在
main()开头调用QFontDatabase::addApplicationFont显式加载中文字体文件,否则只依赖系统 fallback,易失败 - 关键验证点:在程序内打印
os.environ.get("LANG")和sys.getdefaultencoding(),确认两者一致且为utf-8
fc-cache 扫到、LC_ALL 被某处静默覆盖、或者 Java 启动参数漏写——三个地方任意一个断掉,方框就稳稳挂在那儿。










