python 的字元編碼

2022-07-04 20:15:10 字數 2345 閱讀 2882

unicode編碼: unicode編碼為世界上所有字元都分配了乙個唯一編號, 為十六進製制, 如中文簡體漢字 「渣」 的 unicode編號就是 6e23,

unicode僅僅定義了每個字元的編號,並沒有定義如何將這個編號進行儲存的方式,所以後來出現了utf-8, gbk等編碼格式, 它們都是 unicode 的一種實現方式, 仍然使用了unicode 中的唯一編號,個人對其的簡單理解就是在unicode編碼的基礎之上又定義了對字元的儲存方式.

在計算機最早期,只有ascii編碼,但是ascii編碼方式乙個字元只占用乙個位元組,這樣就只能表示英文本元了,這時候中文字元就無法表示了,所以我國出現了gb2312的編碼方式,使得中文可以表示,各個國家有著各個國家的語言,如果每個語言都是用一套各自的編碼方式,那這個就沒有辦法統一了,別人寫的**可能換個語言環境就無法正常執行了,因此才出現了unicode,統一了各種編碼方式

utf-8的產生是為了節省空間而出現的,前面講到unicode通常占用2個位元組,但是對於英文本元其實只需要乙個位元組就可以表示了,因此utf-8為了節省空間實現了動態長度的表示,比如它在編碼中對英文本元用1個位元組表示,而通常對於漢字就是用3個位元組表示。

python2預設字元編碼為:ascii, ascii碼 包含了128個字元, 其中包括所有的英文本元, 阿拉伯數字, 標點符號, 控制符號等

在python2 中使用sys.getdefaultencoding() 得到的是 ascii

在python2中字串分為 unicode 和 str 型別

str : 'this is a str'

unicode: u'this is a unicode code'

事實上, python2 中被引號括起來的字串就是 str, 而str 本身 就是一串位元組碼(byte).如果被括起來字元是字母,那麼就是ascii 編碼的字元。

如果被括起來字元是漢字,那麼也能得到一串位元組, 但是位元組碼是什麼編碼格式的就不確定了。所以最好加上u'', 指定為unicode 編碼。

str to unicode 使用decode(), 解碼

unicode to str 使用encode(), 編碼

如果要將str 轉換成unicode, 那麼需要使用decode(), 將ascii 字元轉換成unicode 字元。

3. python3 中

python3預設字元編碼為:utf-8在python3 中使用如下**得到的是 utf-8

sys.getdefaultencoding()
在python3中字串分為 str 和 bytes 兩種型別, 沒有unicode 型別的字串了。byte 表示:前者包含原始的8位值str 表示: unicode 字元 (用雙引號括起來就是str 型別的)

str to bytes 使用 encode(), 編碼

bytes to str 使用 decode(), 解碼

因為 python3 中沒有 unicode 型別的字串, 所有在 python3 中使用下面這種方式定義字串是沒有意義的

my_str = u"渣男不但醜"
需要指定檔案編碼

f = open('

1.txt

','r

',encoding='

utf-8

')

url編碼的方式是把需要編碼(非ascii)的字元轉化為 %xx 的形式。通常 url 編碼是基於 utf-8 的(當然這和瀏覽器平台有關)。

在 python2.x 中的用法是:

urllib.quote(text)

python3.x 中是

urllib.parse.quote(text)

按照標準, url 只允許一部分 ascii 字元(數字字母和部分符號),其他的字元(如漢字)是不符合 url 標準的。

python的字元編碼

1 字元編碼 將人類的字元編碼 轉換成計算機能識別的數字 這種轉換必須遵循一套固定的標準,該標準無非是 人類字元與數字的對應關係,稱之為字元編碼表 0001 1011 a 0000 0000 b 0000 0001 c 0000 0002 d 0000 0003 bit 二進位制位 bytes 位元...

Python 的字元編碼

配置 python 2.7 sublime text 2 os x 10.10 本文意在理清各種編碼的關係並以此解決 python 中的編碼問題。只有先了解字元表 編碼字符集 字元編碼三者的基本概念,才能直入編碼問題的核心。字元表是乙個系統支援的所有可讀或者可顯示的抽象字元的集合。也就是說字元表裡面...

Python 的字元編碼

在py2中,有兩種字串型別 str型別和unicode型別 str和unicode分別存的是位元組資料 編碼不確定直譯器解釋 和unicode資料 python 2.7.10 default,oct 6 2017,22 29 07 type help credits or license for m...