6

可能重复:
Python、Unicode 和 Windows 控制台

我从文件中读取了一些字符串,当我尝试在 Windows 控制台中打印这些 utf-8 字符串时,出现错误

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 0: ordinal not in range(128)

我尝试使用“chcp 65001”将控制台编码设置为 utf-8 但我收到此错误消息

LookupError: unknown encoding: cp65001
4

2 回答 2

3

我建议你在 stackoverflow 上查看类似的问题,其中有很多。

无论如何,你可以这样做:

  1. 以任何编码(例如 utf8)从文件中读取,但将字符串解码为 un​​icode
  2. 对于 Windows 控制台,输出unicode字符串。在这种特殊情况下,您不需要编码。您无需设置控制台编码,输出文本将自动正确编码。

对于文件,您需要使用编解码器模块或以适当的编码进行编码。

于 2012-04-30T13:57:40.593 回答
2

print 命令尝试将 Unicode 字符串转换为控制台支持的编码。尝试:

>>> import sys
>>> sys.stdout.encoding
'cp852'

它向您展示了控制台支持的编码(告诉 Python 支持什么)。如果字符无法转换为该编码,则无法正确显示。

于 2012-04-30T14:28:40.310 回答