Python 默认使用 UTF-8 是因其兼顾国际化支持、ASCII 兼容性、存储效率及现代系统生态一致性;它向后兼容 ASCII,原生支持 Unicode,比 UTF-16/UTF-32 更省空间且无 BOM 问题,并通过 PEP 597 强化跨平台默认地位。
Python 默认使用 UTF-8,是因为它兼顾了国际化的广泛支持、ASCII 兼容性、存储效率和现代系统生态的一致性。
Python 诞生于 1991 年,早期大量代码和文档基于 ASCII。U

从 Python 3.0 开始,字符串类型 str 统一为 Unicode,而源文件默认编码必须能表达所有 Unicode 字符。UTF-8 是事实标准:Linux/macOS 终端默认用 UTF-8,主流编辑器(VS Code、PyCharm)新建文件默认保存为 UTF-8,HTTP/HTML/JSON 等协议也普遍采用 UTF-8。Python 顺应当下环境,避免用户频繁写 # -*- coding: utf-8 -*- 或遭遇 UnicodeDecodeError。
相比 UTF-16 或 UTF-32:
SyntaxError,但 Python 明确不推荐 BOM);\n),利于解析和工具链集成。即便在 Windows 上传统使用 cp1252 或 GBK,Python 3.15(2025 年发布)起将通过 PEP 597 启用“宽松 UTF-8 模式”:当系统 locale 非 UTF-8 时,Python 仍尝试用 UTF-8 解码源文件和终端输入,并静默回退而非报错。这进一步巩固 UTF-8 作为事实默认的地位。
不是历史偶然,而是权衡可读性、兼容性、生态和实用性后的自然选择。