Python 的字元編碼

2022-08-27 23:18:14 字數 2226 閱讀 5149

在py2中,有兩種字串型別:str型別和unicode型別;str和unicode分別存的是位元組資料(編碼不確定直譯器解釋)和unicode資料

python 2.7.10 (default, oct  6 2017, 22:29:07)

type

"help

", "

", "

credits"or

"license

"for

more information.

>>> a='中國'

>>> printa中國

>>> print type(a) #

檢視型別為字串 str

'str

'>

>>> print repr(a) #

str 中預設存的是位元組資料,str 的編碼是通過直譯器解發布來的。指定了什麼解發布來就是啥編碼,預設acill

'\xe4\xb8\xad\xe5\x9b\xbd

'

py2的編碼(encode)和解碼(decode):是str 和 unicode 之間的轉換encode : unicode --> str  , decode:  str--> unicode

encode 是將unicode編碼的資料轉化成 指定編碼的字串str

decode 是將指定編碼的字串str 轉換為unicode 

py3也有兩種資料型別:str和bytes;  str型別存unicode編碼的資料,bytse型別存bytes資料,與py2比只是換了一下名字而已。

import

json

s='苑昊

'print(type(s)) #

print(json.dumps(s)) #

"\u82d1\u660a"

b=s.encode('

utf8')

print(type(b)) #

print(b) #

b'\xe8\x8b\x91\xe6\x98\x8a'

u=b.decode('

utf8')

print(type(u)) #

print(u) #

苑昊print(json.dumps(u)) #

"\u82d1\u660a"

print(len('

苑昊')) #

2

py3的編碼(encode)和解碼(decode):是str 和 bytes 之間的轉換encode : str --> bytes  , decode:  bytes--> str

encode 是將unicode編碼的str 字串轉化成 指定編碼的bytes

decode 是將指定編碼的bytes 轉換為unicode 編碼的str字串

檢視直譯器的預設編碼:

py2預設ascii碼,py3預設的utf8,可以通過如下方式查詢12

importsys

print(sys.getdefaultencoding())

py2直譯器要通過如下的指定,才會以utf8編碼去讀取檔案。 py3不需要預設就是utf8 

#coding:utf8

(1)指定utf8

#

a.py

#coding=utf8

import

sysprint

sys.getdefaultencoding()

a='中國

'print

type(a),repr(a)

執行:

#python a.py

ascii

'str

'> '

\xe4\xb8\xad\xe5\x9b\xbd

'說明str 存的是utf8編碼的位元組

(2)指定gbk 

#a.py

#coding=gbk

那麼str 存的是gbk編碼的位元組

open檔案如何告訴直譯器通過啥編碼開啟檔案? 解決encoding='utf8' 。python2 沒有這個引數,py3才有

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 的字元編碼

unicode編碼 unicode編碼為世界上所有字元都分配了乙個唯一編號,為十六進製制,如中文簡體漢字 渣 的 unicode編號就是 6e23,unicode僅僅定義了每個字元的編號,並沒有定義如何將這個編號進行儲存的方式,所以後來出現了utf 8,gbk等編碼格式,它們都是 unicode 的...