2014-02-13 18 views
3
中國的字符串打印字符

我test.txt文件包含這些字符:無法通過字符在Python

地藏菩薩本願經卷上 
忉利天宮神通品第一 

我有這個簡單的程序:

f = open("test.txt") 
text = f.read() 
f.close() 

print text 

for c in text: 
    print c, 

print "\n------------" 

for i in range(len(text)): 
    print text[i], 

下面是結果:

地藏菩薩本願經卷上 
忉利天宮神通品第一 
------------ 
å œ ° è — マ è マ © è ミ ¨ æ œ ¬ æ „ ¿ ç » マ å ヘ · ä ¸ Š 
å ¿ ‰ å ˆ © å ¤ © å ® « ç ¥ ž é € š å 「 チ ç ¬ ¬ ä ¸ € 


å œ ° è — マ è マ © è ミ ¨ æ œ ¬ æ „ ¿ ç » マ å ヘ · ä ¸ Š 
å ¿ ‰ å ˆ © å ¤ © å ® « ç ¥ ž é € š å 「 チ ç ¬ ¬ ä ¸ € 

如果使用「打印文本」,「text」會被打印出來。但是,試圖按字符打印字符的兩種方法都失敗了。

發生了什麼事?

+0

你明白爲什麼實際上你需要解碼? –

回答

4

你需要從文件中讀取爲UTF-8第一次對數據進行解碼:

>>> with open('abc1') as f: 
     text = f.read().decode('utf-8') 
...  
>>> print text        
地藏菩薩本願經卷上 忉利天宮神通品第一 
>>> for x in text: 
    print x, 
...  
地 藏 菩 薩 本 願 經 卷 上 忉 利 天 宮 神 通 品 第 一 

或者使用io.open來打開該文件所需的編碼:

>>> import io 
>>> with io.open('abc1', encoding='utf-8') as f: 
    text = f.read() 
>>> for x in text:        
    print x, 
...  
地 藏 菩 薩 本 願 經 卷 上 忉 利 天 宮 神 通 品 第 一