Python代碼中字串的預設編碼與代碼檔案本身的編碼一致
decode的作用是將其他編碼的字串轉換成unicode編碼
encode的作用是將unicode編碼轉換成其他編碼的字串
>>> s="中文"
>>> s
'xd6xd0xcexc4'
>>> s.decode("gbk")
u'u4e2du6587'
>>> print s.decode("gbk")
中文
>>> print s
中文
>>> s.decode("gbk").encode("gbk")
'xd6xd0xcexc4'
>>> print s.decode("gbk").encode("gbk")
中文
>>>
>>> a='中國人'
>>> a
'xd6xd0xb9xfaxc8xcb'
>>> b = unicode(a,'gbk')
>>> b
u'u4e2du56fdu4eba'
>>> a.find('中')
0
>>> a.find('人')
4
>>> b.find('人'.decode('gbk'))
2
>>> print a
中國人
>>> print b
中國人
這裡find函數查到的結果應該很好理解啦。b中的find必須decode一下,否則會出錯。至於為什麼print出來的是漢字,我還沒有研究出來呢。請高手告知。
>>> b.encode('gb18030')
'xd6xd0xb9xfaxc8xcb'
>>> b.encode('cp936')
'xd6xd0xb9xfaxc8xcb'
>>> b.encode('gbk')
'xd6xd0xb9xfaxc8xcb'
>>> b.encode('utf-8')
'xe4xb8xadxe5x9bxbdxe4xbaxba'
說明gb18030、gbk、gb2312以及cp936等都可以進行中文編碼,並且結果還一致,utf-8也可以,只是編碼方式不一樣,所以結果不同而已。原理上他們都是一致的。
>>> type(a)
<type 'str'>
>>> type(b)
<type 'unicode'>
>>> type(b.encode('utf-8'))
<type 'str'>
說明python對字串有兩種編碼方式,一種就是普通方式,另外一種就是unicode。注意utf-8也認為是普通的編碼方式
下面提供了編輯轉換
漢字轉為html實體字元得了。
echo mb_convert_encoding ("重玩一次", "HTML-ENTITIES", "gb2312");
編碼轉換
s = "中文"
s1 = u"中文"
unicode -> gbk
s1.encode("gbk")
unicode -> utf-8
s1.encode("UTF-8")
gbk ->unicode
unicode(s, "gbk")
或者
s.decode("gbk")