如何将Unicode文本写入Python文件对象

3

简单来说,以下代码:

f.write(u'Río Negro')

引起以下错误:

UnicodeEncodeError: 'ascii' codec can't encode character u'\xed' in position 1: ordinal not in range(128)

我该怎么办?
我正在使用Python 2.7.3。


使用 .encode('utf-8') 对字符串进行编码吗? - astreal
你可以使用错误代码在SO上进行搜索,那里有1750多个结果... - dda
2个回答

5
使用 open 函数从 codecs 模块中可以消除你手动编码的需求:
import codecs

with codecs.open('file.txt', 'w', encoding='utf-8') as f:
    f.write(u'Río Negro')

在Python 3中,这个功能已经集成到标准的open函数中:
with open('file.txt', 'w', encoding='utf-8') as f:
    f.write(u'Río Negro')

1
在Python 3中,这个功能是由内置的open()函数提供的。 - Sven Marnach
应该使用io.open()而不是codecs.open()。它的行为与Python 3上的open()相同(其中io.open就是open)。 - jfs

4

您需要对字符串进行编码。可以尝试以下方法:

f.write(u'Río Negro'.encode('utf-8'))

它假设f是一个二进制文件(在Python 3上为“wb”模式)。 - jfs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接