我有以下问题。我有一个以.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,用俄语。有没有人知道我的问题是什么?
最佳, 亚历
答案 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()
我认为蒂姆对控制台问题是正确的。