【发布时间】:2012-12-22 20:04:41
【问题描述】:
我正在使用以下代码打印(到文件)UTF-8 str:
output.write(currentWord.m_wordHeb)
也试过了:
output.write(currentWord.m_wordHeb.encode('utf-8')
还添加了:
import sys
import codecs
sys.stdout = codecs.getwriter('utf8')(sys.stdout)
不断出现错误... 通常是这个:
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-2: character maps to <undefined>
谢谢!
【问题讨论】:
-
currentWord.m_wordHeb的类型和值是什么?请显示print(type(currentWord.m_wordHeb))和print(currentWord.m_wordHeb)的输出 -
我得到以下两个打印行的错误:'TypeError: must be str, not bytes' 我使用几种方法构建字符串,返回类似:u'א'(这是希伯来字符) 并构建为:'string += method()' 所以我不明白为什么它是字节而不是 str。
-
我非常怀疑
print(type(...bla...))是否会给您错误消息TypeError: must be str, not bytes,除非您做了一些非常讨厌的事情,例如更改print的定义。但是,如果您可以展示一段完整的、独立的、可运行的并给出此错误的代码,我很想看看它。因为当我运行您的代码时(在猜测缺少的部分之后)我确实不会得到那个错误。 -
好吧,这就是错误,每当我在解决的文件的打开命令中添加“wb”时,但字符错误(不是希伯来文文本,而是垃圾)
-
请注意,“sys.stdout = codecs.getwriter('utf8')(sys.stdout)”行应替换为“sys.stdout = codecs.getwriter('utf8')(sys .stdout.detach())" 与 python 3.x 一起工作。见stackoverflow.com/a/4374457/1825043。
标签: python string utf-8 output