温馨提示×

ubuntu python乱码怎么破

小樊
45
2026-10-07 08:25:03
栏目: 编程语言

在 Ubuntu 下 Python 出现“乱码”,通常是编码不一致导致的(文件编码、终端编码、Python 内部编码、系统 locale 不匹配)。下面按「最常见原因 → 解决办法」给你一套实用方案。


一、先确认是不是编码问题

典型表现:

  • 中文变成 ???? 或 \xe4\xb8\xad
  • UnicodeDecodeError / UnicodeEncodeError
  • 终端能显示,写文件乱码;或反过来

二、最常见的解决方法(强烈建议)

✅ 1. 设置系统 Locale(最关键)

locale

如果看到:

LANG=C
LC_ALL=C

或含有 POSIX,就会很容易乱码。

修复:

sudo apt update
sudo apt install locales
sudo locale-gen zh_CN.UTF-8
sudo update-locale LANG=zh_CN.UTF-8

然后重新登录或重启终端。


✅ 2. Python 文件统一用 UTF-8

在 .py 文件第一行或第二行加:

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

(Python 3 默认就是 UTF-8,但老代码/混用环境仍建议写)


✅ 3. 终端编码设为 UTF-8

如果你用:

  • GNOME Terminal:右键 → 首选项 → 编码 → UTF-8
  • VS Code:右下角改成 UTF-8
  • Vim:
    set encoding=utf-8
    set fileencoding=utf-8
    

三、Python 代码层面的正确写法

✅ 4. 读文件一定要指定编码

❌ 错误:

open("a.txt")

✅ 正确:

open("a.txt", encoding="utf-8")

✅ 5. 标准输出乱码

import sys
print(sys.stdout.encoding)

如果不是 UTF-8:

export PYTHONIOENCODING=utf-8

四、常见场景速查表

场景 1:print 中文乱码

export LANG=zh_CN.UTF-8

场景 2:pandas 读 csv 乱码

pd.read_csv("x.csv", encoding="utf-8")
# 或
pd.read_csv("x.csv", encoding="gbk")

场景 3:requests 网页乱码

r.encoding = r.apparent_encoding
print(r.text)

五、一行诊断命令(复制就能用)

echo $LANG; python3 -c "import sys; print(sys.stdout.encoding)"

如果你愿意,可以把:

  • 报错信息
  • 使用的 Python 版本
  • 具体场景(终端 / 文件 / Web / pandas)

发出来,我可以直接帮你“精准治乱码”。

0 踩