在 Ubuntu 下使用 Python 出现中文乱码,通常不是 Python 本身的问题,而是编码环境不一致导致的。下面按常见场景给你一套“排查 + 解决”方案。
在终端运行:
python3 -c "import sys; print(sys.getdefaultencoding())"
正常应该是:
utf-8
如果不是 utf-8,说明环境有问题。
locale
如果看到:
LANG=
LC_ALL=
或者包含 POSIX、C,就会出现中文乱码。
sudo apt update
sudo apt install locales
sudo locale-gen zh_CN.UTF-8
sudo update-locale LANG=zh_CN.UTF-8
然后重启终端或重新登录。
再次运行:
locale
应看到:
LANG=zh_CN.UTF-8
LC_ALL=zh_CN.UTF-8
with open("test.txt", encoding="utf-8") as f:
data = f.read()
open("test.txt") # 依赖系统默认编码
export PYTHONIOENCODING=utf-8
python3 test.py
写入 ~/.bashrc:
echo 'export PYTHONIOENCODING=utf-8' >> ~/.bashrc
source ~/.bashrc
确保你的 .py 文件:
# -*- coding: utf-8 -*-
(Python 3 默认就是 UTF-8,但老文件可能不是)
如果你是用:
请确认:
locale 是 UTF-8import sys
print(sys.getdefaultencoding())
print(sys.stdout.encoding)
print("中文测试")
如果最后一行乱码,基本就是终端/locale问题。
sudo locale-gen zh_CN.UTF-8
sudo update-locale LANG=zh_CN.UTF-8
export PYTHONIOENCODING=utf-8
90% 的 Ubuntu Python 中文乱码都能解决。
如果你愿意,可以告诉我:
我可以给你精准解决方案。