温馨提示×

ubuntu python中文乱码怎么办

小樊
55
2026-10-01 12:31:16
栏目: 编程语言

在 Ubuntu 下使用 Python 出现中文乱码,通常不是 Python 本身的问题,而是编码环境不一致导致的。下面按常见场景给你一套“排查 + 解决”方案。


一、先确认 Python 默认编码

在终端运行:

python3 -c "import sys; print(sys.getdefaultencoding())"

正常应该是:

utf-8

如果不是 utf-8,说明环境有问题。


二、最常见原因:终端 / 系统 locale 不是 UTF-8

1. 查看当前 locale

locale

如果看到:

LANG=
LC_ALL=

或者包含 POSIX、C,就会出现中文乱码。

2. 设置为 UTF-8

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

三、Python 文件本身乱码(读文件)

✅ 正确写法(推荐)

with open("test.txt", encoding="utf-8") as f:
    data = f.read()

❌ 错误写法

open("test.txt")  # 依赖系统默认编码

四、print 中文乱码

1. 设置环境变量(临时)

export PYTHONIOENCODING=utf-8
python3 test.py

2. 永久生效

写入 ~/.bashrc:

echo 'export PYTHONIOENCODING=utf-8' >> ~/.bashrc
source ~/.bashrc

五、Python 源码文件乱码

确保你的 .py 文件:

  • 文件本身是 UTF-8 编码
  • 文件开头有:
# -*- coding: utf-8 -*-

(Python 3 默认就是 UTF-8,但老文件可能不是)


六、SSH / 远程连接乱码

如果你是用:

  • PuTTY
  • Xshell
  • VS Code Remote

请确认:

  • 终端编码设置为 UTF-8
  • Ubuntu 端 locale 是 UTF-8

七、快速自检脚本

import 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 中文乱码都能解决。


如果你愿意,可以告诉我:

  • Ubuntu 版本
  • Python 版本
  • 是在终端 / 文件 / Web / 日志里乱码

我可以给你精准解决方案。

0 踩