2012-11-16 101 views
0

我解碼字符串「öçÇşŞükrÜ」到其他一些字符集。Python編碼解碼如何

我遇到了一些有趣的問題,並想了解我如何解決它。

>>> "öçÇşŞükrÜ".decode("utf-8") 
u'\xf6\xe7\xc7\u015f\u015e\xfckr\xdc' 
>>> "öçÇşŞükrÜ".decode("utf-8").encode("utf-8") 
'\xc3\xb6\xc3\xa7\xc3\x87\xc5\x9f\xc5\x9e\xc3\xbckr\xc3\x9c' 


>>> import chardet 
>>> chardet.detect('\xc3\xb6\xc3\xa7\xc3\x87\xc5\x9f\xc5\x9e\xc3\xbckr\xc3\x9c') 
{'confidence': 0.99, 'encoding': 'utf-8'} 
>>> chardet.detect("öçÇşŞükrÜ") 
{'confidence': 0.99, 'encoding': 'utf-8'} 

什麼我不明白,找不到是如何找回原來的字符串「öçÇşŞükrÜ」與Python中的解碼和編碼過程?

+6

閱讀[絕對最小每個軟件開發人員絕對,積極必須知道Unicode和字符集(沒有藉口!)](http://www.joelonsoftware.com/articles/Unicode.html)。 Python文件應該用ASCII編寫(儘管如果你設置了編碼,你可以輸入Unicode字符)。 – katrielalex

+2

以前已經討論過很多次了。最好的資源:https://www.youtube.com/watch?v=sgHbC6udIqc – deceze

回答

1

我解碼字符串「öçÇşŞükrÜ」到其他一些字符集。

不,您正在將編碼字符串解碼爲內存中的Unicode表示形式。對不起,如果這聽起來很刺耳,但恕我直言,它是真的重要的是使用Unicode的基本權利,而不是隻是摸索,直到有些東西的作品。 編輯:評論中的資源,https://www.youtube.com/watch?v=sgHbC6udIqchttp://www.joelonsoftware.com/articles/Unicode.html也是必不可少的。閱讀並觀看它們。你需要知道的是,沒有在磁盤上,或在你的終端是Unicode。一切都使用一種編碼或其他編碼進行編碼。

如果您使用Linux,那麼您很幸運! (我們的Windows開發者...好,痛苦的世界,等)您的控制檯將最有可能是UTF-8,這樣做

"öçÇşŞükrÜ".decode("UTF-8") 

可能是有意義的。

你嘗試

print "öçÇşŞükrÜ".decode("UTF-8").encode("UTF-8") 

(即與應用print)?你應該回到原來的öçÇşŞükrÜ

+0

謝謝,現在我知道我需要學習更多的編碼。這解決了我的問題。 – Skr