【python中的編碼問題】

來源:互聯網
上載者:User

標籤:讀取   首碼   unicode編碼   encoding   就是   替代   檔案的   codec   記憶體   

1、首先要在開頭說明編碼方式為:utf-8

例如:-*- coding: utf-8 -*-

2、如果遇到字串,立刻轉化為unicode,不要使用str(),直接使用unicode()

unicode_str = unicode(‘中文‘, encoding=‘utf-8‘)
print unicode_str.encode(‘utf-8‘)

3、如果是對於檔案操作,開啟檔案的時候,最好使用codecs.open,替代open

import codecs
codecs.open(‘filename‘, encoding=‘utf8‘)

4、unicode通過encode編碼轉化成str,str通過decode解碼轉化成unicode

 

舉個栗子:一個utf-8格式的字串,先被解碼為unicode,這時候不能直接輸出,encode編碼後就可以輸出了

當對字串進行編碼的時候,會先用預設編碼將自己解碼為unicode,然後再將unicode編碼為你指定的編碼

一些個人理解,一開始的電腦只支援ASCII碼,因為是美國人發明的,所以只支援127個字元;後來為了統一,出現了unicode碼,也叫萬國碼,但是unicode編碼的英文會比ASCII碼多一倍儲存空間,所以就出現了把unicode編碼轉化為可變長編碼的UTF-8編碼方式;在電腦記憶體中,統一使用unicode編碼,當需要儲存到硬碟或者需要傳輸的時候,就轉換為UTF-8編碼。

*****python的字串類型是str,在記憶體中以unicode表示,一個字元對應若干個位元組,如果要在網路上傳輸或者儲存到磁碟上,就需要把str變為bytes。

python中,bytes類型的資料用帶b的首碼的單引號或者雙引號表示。以unicode表示的str通過encode()方法可以編碼為指定的bytes。

*****反過來,如果從網路或者磁碟上讀取了位元組流,那麼讀到的資料就是bytes,要把bytes變為str,就要用到decode()方法。

【python中的編碼問題】

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.