在 Ubuntu 下使用 gcc 编译时,报错信息出现乱码,通常不是 GCC 本身的问题,而是终端编码 / 语言环境(locale)设置不正确导致的。下面按常见原因和解决方法来说明。
GCC 的报错信息默认使用系统语言(如中文),如果终端或环境不支持 UTF-8,就会显示乱码。
locale
如果看到类似:
LANG=C
LC_ALL=
或者 zh_CN.GBK,就很容易乱码。
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
如果你没有安装中文 UTF-8:
sudo apt install locales
sudo locale-gen zh_CN.UTF-8
临时测试:
LANG=C.UTF-8 gcc test.c
很多开发者更喜欢这个方式:
export LANG=C
gcc test.c
优点:
即使 locale 正确,终端也要支持 UTF-8:
右键 → 设置 → 兼容性 → UTF-8UTF-8如果你的 .c 文件是 GBK,而终端是 UTF-8,也可能在报错中显示乱码(尤其是中文注释)。
查看文件编码:
file test.c
转换为 UTF-8:
iconv -f GBK -t UTF-8 test.c -o test_utf8.c
| 情况 | 解决 |
|---|---|
| 报错乱码 | export LANG=C |
| 想看中文 | export LANG=zh_CN.UTF-8 |
| 终端乱码 | 终端设置为 UTF-8 |
| 文件乱码 | 转码为 UTF-8 |
如果你愿意,可以把 具体的报错截图或文字 发出来,我可以直接帮你判断是哪一类问题。