在 Debian 上设置 Python 编码,通常分系统/终端编码、Python 自身默认编码、源码文件编码三种情况。下面按常见场景说明。
locale
重点看:
LANGLC_CTYPEPython 中查看:
import sys
print(sys.getdefaultencoding())
print(sys.stdout.encoding)
sudo dpkg-reconfigure locales
勾选:
en_US.UTF-8
(或 zh_CN.UTF-8)
设置默认:
sudo update-locale LANG=en_US.UTF-8
重新登录或重启。
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
如果是输出乱码(print 到终端),推荐:
export PYTHONIOENCODING=utf-8
可写入:
~/.bashrc
一般不用改。
文件第一行或第二行:
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
⚠️ 不推荐,容易埋坑。
unicodeencode/decode| 问题 | 解决 |
|---|---|
| print 中文乱码 | PYTHONIOENCODING=utf-8 |
| 读文件乱码 | open(f, encoding='utf-8') |
| 系统无 UTF-8 | dpkg-reconfigure locales |
| SSH 客户端乱码 | 客户端编码设为 UTF-8 |
LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8
PYTHONIOENCODING=utf-8
如果你说的是具体场景(比如:Django、定时任务、systemd、pip 安装乱码),可以告诉我,我给你更精准的配置。