【发布时间】:2016-08-18 12:20:42
【问题描述】:
我尝试将“字符串”写入文件并收到以下错误消息:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xcd' in position 6: ordinal not in range(128)
我尝试了以下方法:
print >>f, txt
print >>f, txt.decode('utf-8')
print >>f, txt.encode('utf-8')
它们都不起作用。我有同样的错误信息。
编码和解码背后的想法是什么?如果我有一个 unicode 对象,我可以直接将其写入文件还是需要将其转换为字符串?
我怎样才能知道使用了什么编码?我怎么知道它是 utf-8 还是 ascii 或其他什么?
添加
我想我刚刚设法将一个字符串保存到一个文件中。 print >>f, txt 和 print >>f, txt.decode('utf-8') 不起作用,但 print >>f, txt.encode('utf-8') 起作用。我没有收到错误消息,并且在我的文件中看到了中文字符。
【问题讨论】:
-
那个字符串是什么?
-
@EbraHim,我猜它是一个 unicode 对象,因为我通过以下方式读取字符串获得了字符串:
for line in io.open(fname, encoding="utf8"): -
@Roman for line in io.open(fname, encoding="utf8"): 将编码改为utf-8
-
您的问题在这里得到解答:stackoverflow.com/questions/6048085/…
-
文件包含字节。 Unicode 字符串由代码点组成。您需要将它们转换为字节,有很多方法可以做到这一点,这称为编码。
标签: python unicode decode encode utf