Window下终端中文输出乱码问题解决

609 阅读1分钟

在 Python 3.x 中,控制台输出默认情况下应该已经使用 UTF-8 编码。但是,在某些情况下,你可能会遇到编码问题,为了确保控制台输出正确显示 UTF-8 字符,你可以采取以下几种方法:

1. 在 Python 中查看终端编码

import sys
print(sys.stdout.encoding)

2. 设置环境变量 (推荐,适用于 Windows)

这是最可靠的方法,因为它会影响整个控制台会话。

  • 临时设置 (仅限当前控制台窗口): 在命令提示符或 PowerShell 中,运行以下命令:
    chcp 65001
    
    这将把当前控制台的编码设置为 UTF-8 (代码页 65001)。

3. 在 Python 代码中设置 sys.stdout.reconfigure (适用于 Python 3.7+)

这种方法允许你在 Python 代码中显式地设置标准输出的编码。

import sys
import io

sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

# 或者使用 sys.stdout.reconfigure (Python 3.7+)
# sys.stdout.reconfigure(encoding='utf-8')

print("你好,世界!")

解释:

  • io.TextIOWrapper 将原始的字节流 sys.stdout.buffer 包装成一个文本流,并指定编码为 UTF-8。
  • sys.stdout.reconfigure (Python 3.7+) 是一个更简洁的方法,直接重新配置 sys.stdout 的编码。

4. 检查你的编辑器/IDE设置

确保你的代码编辑器或 IDE 也设置为使用 UTF-8 编码。否则,即使你的控制台设置正确,你的代码文件也可能使用错误的编码,导致输出乱码。

总结:

  • 确保你的控制台和代码编辑器都使用 UTF-8 编码。
  • 在 Windows 上,使用 chcp 65001 或永久设置系统区域设置。
  • 在 Python 代码中,可以使用 sys.stdout.reconfigure (Python 3.7+) 或 codecs 模块来显式设置输出编码。

通过以上方法,你应该能够解决 Python 控制台输出 UTF-8 字符的问题。