python中文編碼轉換與正確輸出

來源:互聯網
上載者:User

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")

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.