温馨提示×

ubuntu为何python乱码

小樊
44
2026-10-10 08:26:02
栏目: 编程语言

在 Ubuntu 下 Python 出现“乱码”,通常不是 Python 本身的问题,而是编码环境不一致导致的。下面按常见原因给你系统说明一下。


一、最常见原因:终端 / 系统编码不是 UTF-8

1. 查看当前编码

locale

如果看到类似:

LANG=C
LC_CTYPE=POSIX

或不是 UTF-8,就很可能出现乱码。

2. 正确做法(推荐)

设置为 UTF-8:

sudo locale-gen zh_CN.UTF-8
sudo update-locale LANG=zh_CN.UTF-8

或者英文环境:

sudo update-locale LANG=en_US.UTF-8

重启终端或重新登录。


二、Python 源文件未声明编码(Python 2 常见)

Python 2

如果文件中有中文,必须声明:

# -*- coding: utf-8 -*-

否则会报错或乱码。

Python 3

默认就是 UTF-8,不需要声明,但文件本身必须真的是 UTF-8 保存的。


三、文件本身不是 UTF-8 编码

例如 Windows 下保存为 GBK。

查看文件编码:

file xxx.py

转换编码:

iconv -f gbk -t utf-8 xxx.py > xxx_utf8.py

四、终端显示乱码(不是 Python 问题)

即使 Python 输出是对的,终端不支持也会乱码。

检查终端编码:

  • GNOME Terminal:右键 → 配置文件 → 编码 → UTF-8
  • 远程连接(SSH):客户端也要 UTF-8

五、Python 输出时的常见错误写法

❌ 错误示例

print "中文"          # Python 2 未声明编码

✅ 正确示例

# Python 3
print("中文")

或 Python 2:

# -*- coding: utf-8 -*-
print u"中文"

六、读写文件时乱码

读文件要明确编码

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

写文件

with open("b.txt", "w", encoding="utf-8") as f:
    f.write("中文")

七、快速自检清单 ✅

  • [ ] locale 是 UTF-8
  • [ ] 终端编码是 UTF-8
  • [ ] 源文件是 UTF-8
  • [ ] Python 3(推荐)
  • [ ] 文件读写指定 encoding

如果你愿意,可以把具体报错或乱码截图/代码发出来,我可以直接帮你定位是哪一种乱码。

0 踩