Python 編碼問題 utf-8 和 unicode
來自: http://blog.csdn.net//never_cxb/article/details/49967143
前言:utf-8 和 unicode
UTF-8,1個漢字占3個字節,擴展B區以后的漢字占4個字節。
GBK,1個漢字占2個字節。
UTF-16,通常漢字占兩個字節。
Unicode,一個英文等于兩個字節,一個中文(含繁體)等于兩個字節,范圍是 \u4e00-\u9fa5。
UTF-8是Unicode的一個實現?
記得java虛擬機存儲代碼都是用unicode的,不涉及具體編碼格式,只有在讀入讀出邊界處會用具體編碼格式來處理。
命令行模式下
>>> u'\u597d\u73a9' u'\u597d\u73a9' >>> print u'\u597d\u73a9' 好玩
好玩的 unicode 是 \u597d\u73a9
IDE模式下
# -- coding: UTF-8 -- s = "好玩" print s print s.decode("utf-8").encode("utf-8") print unicode(s,"utf-8")print len(s) print len(s.decode("utf-8").encode("utf-8")) print len(unicode(s,"utf-8"))</pre>
輸出
好玩 好玩 好玩 6 6 2utf-8每個漢字占3個字節,所以“好玩”輸出了6
一個漢字表示為一個unicode,所以這兒的len表示的是有幾個unicode,所以輸出了2“好玩”的unicode為
\u597d\u73a9
us = u'\u597d\u73a9' print us print us.encode("utf-8")print len(us) print len(us.encode("utf-8"))</pre>
輸出
好玩 好玩 2 6疑惑
us = u'\u597d\u73a9'
print us
這兒會輸出漢字好玩
我不知道在IDE里面如何輸出
u'\u597d\u73a9'
,在命令行里面倒是可以。輸出的時候會轉化為IDE控制臺使用的編碼格式,所以會輸出漢字?
后來找到了解決方法,利用python自帶的
repr
函數us = u'\u597d\u73a9' print repr(us) print repr(us.encode("utf-8"))輸出
u'\u597d\u73a9' '\xe5\xa5\xbd\xe7\x8e\xa9'可以看出utf-8表示漢字確實用了3個字節。
</div>
本文由用戶 zhjd2010 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!