2016-06-10 81 views
-1

我有這樣的代碼:python3字節字符串編碼

res = conn.getresponse() 
data = res.read() 

doc = xmltodict.parse(data) 

risultati = doc['result']['data'] 

mieiris = json.loads(risultati) 

for k in mieiris['Headword']['Component']: 
    try: 
     print(k['Text']) 
    except KeyError: 
     pass 
    except UnicodeEncodeError: 
     uhm = k['Text'].encode("utf-8") 
     print(uhm.decode("unicode_escape")) 

返回我這樣的結果:

b'ci\xc3\xa0-o' 
inter. 
si usa come saluto amichevole e confidenziale quando ci si incontra o ci si lascia 
b'Dal ven. {\\i s{#c-v-r#}iao}, propr. \xe2\x80\x98(sono vostro) schiavo\xe2\x80\x99' 

現在我無法弄清楚如何正確顯示使用UTF-最後一個字符串8編碼。你有什麼提示嗎?

+0

這一切似乎很不必要的 - 你應該只得到'UnicodeEncodeError'如果您的控制檯的語言環境可以」 t(或認爲它不能)支持你正在打印的角色。您應該修復您的控制檯或寫入文件。你最後的'encode()'/'decode()'完全是瘋狂的。這聽起來像一個典型的XY問題 –

+0

嗨@AlastairMcCormack,是的,這完全是瘋狂的;)我已經做了很多嘗試,以獲得正確格式的字符串,這是我的最後一個;)我不能寫入一個文件,這將是一個電報機器人,所以控制檯將不會是我的最終輸出。 –

+0

:)好的,所以你正在解決在你的最終應用中不存在的特定控制檯的限制問題 - 這是一個糟糕的主意:)你是否正在編寫自己的電報機器人(不知道UTF-8如何可以用莫爾斯表達)還是別人的?現在還不清楚你在問什麼 –

回答

0

我用unidecode模塊解決了。

所以我最後的是現在:

for k in mieiris['Headword']['Component']: 
    try: 
     print(k['Text']) 
    except KeyError: 
     pass 
    except UnicodeEncodeError: 
     print(unidecode(k['Text'])) 

希望這能幫助別人:)