2013-06-04 64 views
3

簡單地說,下面的代碼:如何Unicode文本寫入一個Python文件對象

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。

+0

在字符串上使用.encode('utf-8')? – astreal

+0

你可以用你的錯誤代碼搜索SO,結果有1,750多個結果... – dda

回答

4

您需要對您的字符串進行編碼。試試這個:

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

它工作,謝謝! –

+0

它假設'f'是一個二進制文件(在Python 3中爲''wb''模式)。 – jfs

5

codecs模塊使用open將不再需要您手動編碼:

import codecs 

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

在Python 3,該功能內置於the standard open function

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

這個。在Python 3中,這個功能是由內置的open()提供的。 –

+0

應該使用'io.open()'而不是'codecs.open()'。它的行爲與Python 3上的open()相同(其中'io.open打開了')。 – jfs