python 字元編碼

2022-08-30 04:33:07 字數 2937 閱讀 1340

#

coding:utf-8

in [6]: import

sysin [7]: sys.getdefaultencoding()

out[7]: '

ascii

'in [8]: reload(sys)

'sys

' (built-in)>in [9]: sys.setdefaultencoding('

utf-8')

in [10]: sys.getdefaultencoding()

out[10]: '

utf-8

'

#

#syntaxerror: from __future__ imports must occur at the beginning of the file

in [25]: from

__future__

import

unicode_literals

in [26]: type('

123'

)out[26]: unicode

in [27]: type(u'

123'

)out[27]: unicode

是最早使用、最常見的一種字元編碼,包含了128個字元(英文本母、數字、符號、控制字元等),也是下面講到的所有編碼的公共集合。

西歐字符集編碼。

這是簡體中文的三種編碼,從左到右包含的字元範圍依次增大,左邊是右邊的子集。

正體中文編碼。

in [11]: from chardet import

detect

in [12]: detect('

abc'

)out[12]:

in [13]: detect(r'

abc'

)out[13]:

注:detect的引數不能是unicode字串,否則會報錯。

str和unicode都是python內建的兩種字串類,並且有著同樣的父類:basestring

in [15]: type('

123'

)out[15]: str

in [16]: type(u'

123'

)out[16]: unicode

in [17]: str.__bases__

out[17]: (basestring,)

in [18]: unicode.__bases__

out[18]: (basestring,)

in [19]: basestring.__bases__

out[19]: (object,)

有時候並不知道乙個字串的編碼是什麼(比如從某個檔案中讀取的內容),這時候如何把這個檔案的字元編碼轉為需要的編碼呢(比如gbk)?

答案是:借助unicode為橋梁。

比如:

with open('

content.txt

','r

') as fin:

content =fin.read()

#這裡先把檔案內容decode成utf-8編碼(中間橋梁),再encode成gbk編碼(目標編碼)

target = content.decode('

utf-8

').encode('

gbk')

in [20]: s = '

\u6211

'in [21]: type(s)

out[21]: str

in [22]: print

s\u6211

in [23]: print s.decode('

unicode-escape

').encode('

utf-8')

in [2]: s = '

123'

in [3]: type(s)

out[3]: str

in [4]: s = unicode(s,'

utf-8')

in [5]: type(s)

out[5]: unicode

按照matplotlib預設的字元編碼,在圖表中中文不能正常顯示,會顯示為方框,如下:

import

matplotlib.pyplot as plt

x = [1,2,3]

y = [4,6,8]

plt.plot(x,y)

plt.title(u'資料

')plt.show()

解決方法:

plt.rcparams['

font.sans-serif

'] = ['

simhei

'] #

指定預設字型

plt.rcparams['

axes.unicode_minus

'] = false #

解決負號顯示為方框的問題

plt.title(u'資料'

python字元編碼

ascii 碼是乙個位元組,通常只能顯示英文本母和數字。unicode碼為了顯示多種語言產生,但是要占用兩個位元組,顯示文字要占用大量空間 utf 8 為了節約空間而生,英文本元只用乙個位元組儲存,中文字元需要三個位元組 character ascii unicode utf 8 a01000000...

python字元編碼

列印python檔案編碼 import sys print sys.getdefaultencoding 中文的乙個字元unicode占用2個位元組。對在於ascii字元占用1個位元組 utf 8中 中文字元佔3個位元組,英文本元占用1個位元組 編碼和轉碼 unicode不能再解碼了 它是基層的 u...

Python字元編碼

在用python程式設計中,字串有兩種表示方法 string 和 u string 為什麼字串要是用這兩種表達方式。不是僅僅用前一種呢?使用type 函式檢視,它們各自是str物件和unicode物件。這兩個物件有什麼差別嗎?還有經經常使用到的encode 和decode 又是幹什麼的呢?都說pyt...