溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何為python中的字符串設(shè)置編碼

發(fā)布時(shí)間:2020-12-04 15:08:22 來源:億速云 閱讀:565 作者:Leah 欄目:開發(fā)技術(shù)

本篇文章給大家分享的是有關(guān)如何為python中的字符串設(shè)置編碼,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

1. 常用的編碼

  • ASCII:只能表示一些字母,數(shù)字和特殊的字符,占一個(gè)字節(jié)
  • GBK:國家簡(jiǎn)體中文字符集和繁體字符集,兼容ASCII,占兩個(gè)字節(jié)
  • Unicode:能夠表示全世界上所有的字符,Unicode有人說占4個(gè)字節(jié)也有人說占2個(gè)字節(jié),但中文占2個(gè)字節(jié)
  • UTF-8:Unicode的壓縮版,占1~3個(gè)字節(jié),其中中文占三個(gè)字節(jié)
       2.補(bǔ)充:計(jì)算機(jī)表示的單位:

bit: 位,計(jì)算機(jī)最小的表示單位

bytes:字節(jié),最小的存儲(chǔ)單位,1bytes=8bit,1bytes簡(jiǎn)寫成1B

1KB = 1024B

1MB = 1024KB

1GB = 1024MB

1TB = 1024GB

......

3.ASCII編碼

ASCII編碼是基于拉丁字母一套編碼,主要是顯示現(xiàn)代英語和其西歐語言,是最早通用的單字節(jié)編碼系統(tǒng),具體ASCII對(duì)照表如下:

如何為python中的字符串設(shè)置編碼

在對(duì)照表中需要記住的是大寫字母A的編碼是65,小寫字母a的編碼的97即可。

在python中可以使用chr和ord方法進(jìn)行轉(zhuǎn)換:

# 將數(shù)字類型轉(zhuǎn)換成ASCII對(duì)應(yīng)的字符
print(chr(97)) # a
# 將數(shù)字轉(zhuǎn)換成對(duì)應(yīng)的數(shù)據(jù)
print(ord("A")) # 65
# 或者使用

但隨著事件的發(fā)展,ASCII編碼擴(kuò)展到了256個(gè)字符,編碼 對(duì)照表如下:

如何為python中的字符串設(shè)置編碼

其中后128個(gè)字符稱為擴(kuò)展ASCII碼

2.GBK和GB2312編碼

由于ASCII編碼只能由256個(gè)字符組成,然只能由1個(gè)字節(jié)來表示中文是不可能的,因此制定了GB2312編碼,用來表示中文的對(duì)照表

4.Unicode

為了解決各個(gè)國家編碼沖突的問題,Unicode編碼就因此而生,Unicode把所有語言都統(tǒng)一到一套編碼里面,就會(huì)避免沖突,產(chǎn)生亂碼。

Unicodeb標(biāo)準(zhǔn)在不斷發(fā)展,最常用的是用兩個(gè)字節(jié)表示一個(gè)字符,也有的字符是4個(gè)字節(jié),但是中文是占兩個(gè)字節(jié)。如果統(tǒng)一成Unicode編碼,在存儲(chǔ)和傳輸上就不劃算

5.UTF-8編碼

為了解決Unicode編碼存儲(chǔ)過大的問題,就推出了可變長編碼UTF-8,UTF-8編碼把一個(gè)Unicode字符依據(jù)不同的數(shù)據(jù)大小編程1~6個(gè)字節(jié),其中中文就占3個(gè)字節(jié)

6.編碼和解碼

1.編碼操作

可以通過encode進(jìn)行編碼,其中語法如下:

對(duì)字符串進(jìn)行ASCII編碼(只能轉(zhuǎn)換數(shù)字,英文字母和一些符號(hào))

# 方式1: 通過bytes方法
bytes('a', 'ASCII')
# 方式2: 通過encode方法進(jìn)行
'a'.encode('ASCII') 

將字符串轉(zhuǎn)換成gbk編碼格式

# 方式1: 通過encode方法進(jìn)行
print('你好'.encode('GBK')) # 編碼之后的結(jié)果為:b'\xc4\xe3\xba\xc3'
# 方式2: 通過bytes類型
print(bytes('我愛你', 'GBK')) # 編碼之后的結(jié)果為:b'\xce\xd2\xb0\xae\xc4\xe3'

將字符串轉(zhuǎn)換成Unicode編碼格式

# 方式1: 通過encode方法進(jìn)行
print('你好'.encode('unicode_escape')) # 編碼之后的結(jié)果為:b'\\u4f60\\u597d'
# 方式2: 通過bytes類型
print(bytes('我愛你', 'unicode_escape')) # 編碼之后的結(jié)果為:b'\\u6211\\u7231\\u4f60'

將字符串轉(zhuǎn)換成UTF-8編碼格式

# 方式1: 通過encode方法進(jìn)行
print('你好'.encode('utf-8')) # 編碼之后的結(jié)果為:b'\xe4\xbd\xa0\xe5\xa5\xbd'
# 方式2: 通過bytes類型
print(bytes('我愛你', 'utf-8')) # 編碼之后的結(jié)果為:b'\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0'

2.解碼操作

將GBK編碼格式轉(zhuǎn)換成字符串

# 通過decode方法解碼
print(b'\xc4\xe3\xba\xc3\xce\xd2\xb0\xae\xc4\xe3'.decode('GBK')) # 解碼之后結(jié)果為:你好我愛你

將UTF-8編碼格式轉(zhuǎn)換成字符串

# 通過decode方法解碼
print(b'\xe4\xbd\xa0\xe5\xa5\xbd\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0'.decode('utf-8')) # 解碼之后結(jié)果為:你好我愛你

將Uniconde編碼格式轉(zhuǎn)換成字符串

# 通過decode方法解碼
print(b'\\u4f60\\u597d\\u6211\\u7231\\u4f60'.decode('GBK')) # 解碼之后結(jié)果為:你好我愛你

以上就是如何為python中的字符串設(shè)置編碼,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI