2013-03-11 73 views
0

在Python 3中,我們使用"string".encode()"string".decode()將Unicode字符串轉換爲字節字符串,或將字符串轉換爲Unicode字符串。Python中的編碼/解碼有什麼區別2/3

在Python 2中,我們有str()unicode(),我們也可以給他們encode()decode()給他們。但是,Python 3有什麼區別嗎?

+0

Python 3.x具有完整的UTF8支持。這意味着Python 2.x可能會產生錯誤的轉換,或者在轉換UTF8時會遇到問題(使用'str()'的專業)。我有片假名在Python 2.7中使用的可怕經驗。我總是使用二進制/十六進制轉換來解決解碼問題上的代碼崩潰問題。 – 2013-03-11 09:35:58

+0

聽起來很糟糕。我正在開發一個帶有CJK字符的網絡程序。所以,我應該留意以下幾點:1.用戶輸入,2.字符串操作3.發送到Web服務器。我想將一個Python 2 SDK移植到Python 3,但是我發現我無法理解''用'str()'和'unicode()'編碼()'和decode()',所以我問了這個問題...... – 2013-03-11 09:56:37

回答

0

在python2中,str是字節字符串,unicode是unicode字符串。但有些編碼和解碼的愚蠢的東西,詳細信息請參考http://nedbatchelder.com/text/unipain.html

+0

這實際上並沒有回答OP的問題。 – dmg 2013-03-11 09:41:46

+0

這是不正確的。在Python 2中,''a .encode()。encode()'是可能的,但它在Python 3中是非法的。因此,'str'與'bytes'不完全相同。 – 2013-03-11 09:47:01

+0

@比爾蓋子你是對的,你可以參考http://nedbatchelder.com/text/unipain.html – linbo 2013-03-11 09:48:44