从命令提示符解码的问题[python]

时间:2014-05-25 12:28:16

标签: python utf8-decode

我有以下问题。我有一个以.txt UTF-8格式保存的德语文本,我想用python打印出来。这是我的代码:

txt = open(filename, 'r').read()
print txt.decode('utf-8-sig')

它在IDLE中完美运行,但是当我保存代码并从命令提示符运行它时,它会引发错误,特别是:

UnicodeEncodeError: 'charmap' codec can't encode characters in position 3-4: cha
racter maps to <undefined>

在我的特定情况下,文本是“gemäßigt”,并且在.py代码的开头我添加了类似

的内容
# -*- coding: utf-8-sig -*-

顺便说一句,我的操作系统是Windows,用俄语。有没有人知道我的问题是什么?

最佳, 亚历

2 个答案:

答案 0 :(得分:1)

您的控制台使用的DOS codepage 866没有äß的字符符号,从而导致错误。

您可以在输出前尝试.encoding('cp866', errors='replace')字符串,将? s替换终端不支持的所有字符。

答案 1 :(得分:0)

您的文字是UTF-8还是utf-8-sig?它不是一样的。 在这里你可以了解其中的差异。 https://docs.python.org/3/library/codecs.html#encodings-and-unicode

您还可以打开已使用

解码的文本文件
import codecs
txt = codecs.open(filename,'r',"utf-8-sig").read()

我认为蒂姆对控制台问题是正确的。