2011-11-21 68 views
3

前段時間我參加了一門中文研究課程,我認爲用python編寫一個flashcard程序對我來說是一個很好的練習。我將閃存卡列表存儲在.txt文件的字典中,目前爲止沒有任何問題。當我嘗試將用utf-8編碼的文件加載到我的程序中時,真正的問題就出現了。我的代碼摘錄:現在python2.7 - 閱讀一個帶有unicode的.txt文件的字典

import codecs 

f = codecs.open(('list.txt'),'r','utf-8') 
quiz_list = eval(f.read()) 

quizy = str(quiz_list).encode('utf-8') 

print quizy 

,例如,如果LIST.TXT包括:

{'character1':'男人'} 

印什麼是真正的

{'character1': '\xe7\x94\xb7\xe7\x86\xb1'} 

顯然,有一些嚴重的編碼問題在這裏,但我不能爲我的生活理解這裏發生的。我正在使用支持utf-8的終端,因此不是標準的cmd.exe:這不是問題。讀取一個沒有卷積字典的普通list.txt返回的中文字符沒有問題,所以我的猜測是我沒有正確處理字典部分。任何想法將不勝感激!

回答

3

沒有什麼不對您的編碼......看看這個:

>>> d = {1:'男人'} 
>>> d[1] 
'\xe7\x94\xb7\xe4\xba\xba' 
>>> print d[1] 
男人 

一件事是打印unicode字符串另一個是印刷其代表性。

+0

@ephemient謝謝兩位!我明白了,顯然我應該把我的研究做得更好一些。謝謝你的時間。 – user1058744

2

str(quizy)調用repr(quizy['character1'])它生成字符串值的ASCII表示。如果你只是print quizy['character1'],你會發現Python字符串中的字符代碼是Unicode。