2012-04-26 259 views
1

處理Unicode字符我寫了下面的代碼寫的內容文件,問題與蟒蛇

with codecs.open(name,"a","utf8") as myfile: 
     myfile.write(str(eachrecord[1]).encode('utf8')) 
     myfile.write(" ") 
     myfile.write(str(eachrecord[0]).encode('utf8')) 
     myfile.write("\n")` 

寫Unicode字符時,上面的代碼不能正常工作....即使我我正在使用編解碼器並進行編碼。我不斷收到錯誤

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

任何人都可以看到我在哪裏做錯了嗎?

編輯:

with codecs.open(name,"a","utf8") as myfile: 
        myfile.write(unicode(eachrecord[1])) 
        myfile.write(" ") 
        myfile.write(unicode(eachrecord[0])) 
        myfile.write("\n") 

這worked..Thanks所有快速意見和answers..that確實有幫助..我不知道,Python有「統一」選項,直到你們告訴我

+3

是什麼類型'eachrecord [1]'? 'str'讓我覺得亂七八糟,用'unicode'代替。 – Fenikso 2012-04-26 16:12:56

+2

而且我認爲你甚至不必編碼unicode字符串,因爲使用編解碼器打開的文件應該處理它。 – Fenikso 2012-04-26 16:14:22

+0

eachrecord [1]可以是字符串或數字 – kich 2012-04-26 16:14:39

回答

2

取出str()電話。他們使用默認編碼進行隱式編碼(在這種情況下爲ascii)。

+0

謝謝你,我不斷收到此錯誤「AttributeError的INT found..any建議:‘詮釋’對象沒有屬性'編碼'「當我刪除str()調用 – kich 2012-04-26 16:14:04

+1

@ kich:然後使用'unicode'而不是'str'。 – Avaris 2012-04-26 16:15:40