最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python3.x編碼解碼unicode字符串的實(shí)現(xiàn)示例

 更新時(shí)間:2024年01月16日 09:59:36   作者:梯閱線(xiàn)條  
ASCII文本編碼是一種Unicode,存儲(chǔ)為表示字符的字節(jié)值的一個(gè)序列,本文主要介紹了python3.x編碼解碼unicode字符串的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下

python的ASCII碼范圍為[0,127],非ASCII碼范圍大于127.

通過(guò)str.encode(encoding)和bytes(str,encoding)根據(jù)編碼名將字符串編碼為原始字節(jié)。

通過(guò)bytes.decode(encoding)和str(bytes,encoding)根據(jù)編碼名將原始字節(jié)解碼為字符串。

gbk編碼中,1個(gè)漢字表示2個(gè)字節(jié),utf-8編碼中,1個(gè)漢字表示3個(gè)字節(jié)。

1個(gè)字節(jié)用2位16進(jìn)制表示。編碼和解碼必須送編碼名encoding。

‘\xNN’為兩個(gè)十六進(jìn)制,表示1個(gè)字節(jié),

’\uNNNN’為unicode轉(zhuǎn)義,表示四個(gè)十六進(jìn)制位,編碼1個(gè)2字節(jié)(16位)字符碼,

’\UNNNNNNNN’為unicode轉(zhuǎn)義,表示八個(gè)十六進(jìn)制位,編碼1個(gè)4字節(jié)(32位)字符碼,

2個(gè)16進(jìn)制對(duì)應(yīng)1個(gè)字節(jié)。

注意,2字節(jié)用小u(\u),4字節(jié)用大U(\U)。

1 編碼ASCII文本

ASCII文本編碼是一種Unicode,存儲(chǔ)為表示字符的字節(jié)值的一個(gè)序列。

ASCII碼范圍0-127.通過(guò)編碼后,在字符前加b或B,打印值和字符相同。

>>> ord('a')
97
>>> chr(97)
'a'
>>> s='abc'
>>> s
'abc'
>>> len(s)
3
>>> [ord(c) for c in s]
[97, 98, 99]
>>> s.encode('ascii')
b'abc'
>>> s.encode('gbk')
b'abc'
>>> s.encode('utf-8')
b'abc'
>>> b_asc=s.encode('ascii')
>>> b_gbk=s.encode('gbk')
>>> b_utf8=s.encode('utf-8')
>>> list(map(list,(b_asc,b_gbk,b_utf8)))
[[97, 98, 99], [97, 98, 99], [97, 98, 99]]

2 編碼非ASCII文本

編碼非ASCII字符(編碼值大于127),需用十六進(jìn)制或Unicode轉(zhuǎn)義。

十六進(jìn)制轉(zhuǎn)義用于單字節(jié),Unicode用于兩個(gè)或四個(gè)字節(jié)。

示例

>>> a,b=0xa5,0xa9
>>> a,b
(165, 169)
>>> hex(a),hex(b)
('0xa5', '0xa9')
>>> chr(a),chr(b)
('¥', '?')
# \xNN 十六進(jìn)制單字節(jié)格式
>>> s1='\xa5\xa9'
# \uNNNN Unicode 雙字節(jié)格式
>>> s2='\u00a5\u00a9'
>>> s1,s2
('¥?', '¥?')
>>> len(s1),len(s2)
(2, 2)
# \UNNNNNNNN Unicode 四字節(jié)格式
>>> s3='\U000000a5'
>>> s3
'¥'

3 編碼和解碼非ASCII文本

描述

#項(xiàng)目描述
1\xNN2位16進(jìn)制,表示單字節(jié),用\x轉(zhuǎn)義,表示ASCII文本的unicode
2\uNNNN4位16進(jìn)制,表示雙字節(jié),用\u轉(zhuǎn)義,表示非ASCII文本的unicode
3\UNNNNNNNN8位16進(jìn)制,表示四字節(jié),用\U轉(zhuǎn)義,表示非ASCII文本的unicode
4單字節(jié)1個(gè)字節(jié)2位16進(jìn)制
5ASCII編碼范圍[0-127]
6非ASCII編碼范圍大于127
7gbk編碼1個(gè)漢字2個(gè)字節(jié),1個(gè)字節(jié)2位16進(jìn)制
8utf-8編碼1個(gè)漢字3個(gè)字節(jié),1個(gè)字節(jié)2位16進(jìn)制
9unicode文本python3.x的字符串str為unicode文本
10ord©獲取字符c的unicode編碼,為整數(shù)
11hex(i)獲取整數(shù)i的16進(jìn)制
12hex(ord©)獲取字符c的unicode編碼的16進(jìn)制,用\u轉(zhuǎn)義
13str.encode(encoding)根據(jù)編碼名encoding將字符串str編碼為原始字節(jié),返回bytes類(lèi)型數(shù)據(jù),b或B開(kāi)頭
14bytes.decode(encoding)根據(jù)編碼名encoding將原始字節(jié)解碼為字符串,返回str類(lèi)型數(shù)據(jù)
15bytes(str,encoding)根據(jù)編碼名encoding將字符串str編碼為原始字節(jié),返回bytes類(lèi)型數(shù)據(jù),b或B開(kāi)頭
16str(bytes,encoding)根據(jù)編碼名encoding將原始字節(jié)解碼為字符串,返回str類(lèi)型數(shù)據(jù)

示例

>>> c1,c2='梯','閱'
# \xNN 16進(jìn)制單字節(jié), \uNNNN 16進(jìn)制雙字節(jié) , \UNNNNNNNN 16進(jìn)制四字節(jié)
>>> c1_hexstr,c2_hexstr=hex(ord(c1)),hex(ord(c2))
# ord(c)獲取c的unicode值,通過(guò)hex(i)獲取unicode值的16進(jìn)制
>>> c1_hexstr,c2_hexstr
('0x68af', '0x9605')
# \uNNNN 四位16進(jìn)制表示的2個(gè)字節(jié),1個(gè)漢字為2個(gè)字節(jié)的unicode
# 每個(gè)字節(jié)的unicode 用\u 轉(zhuǎn)義 原始字節(jié)
>>> c1c2='\u68af\u9605'
>>> c1c2
'梯閱'
>>> len(c1c2)
2
# ASCII 范圍為[0,127]
>>> c1c2.encode('ascii')
Traceback (most recent call last):
  File "<pyshell#82>", line 1, in <module>
    c1c2.encode('ascii')
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
# 通過(guò) 編碼名 gbk 的碼表編碼, 1個(gè) 漢字為2個(gè)字節(jié) ,1個(gè)字節(jié)為2位16進(jìn)制
# str.encode(encoding) 根據(jù)編碼名 將字符串編碼為原始字節(jié)
>>> c1c2.encode('gbk')
b'\xcc\xdd\xd4\xc4'
>>> '梯閱'.encode('gbk')
b'\xcc\xdd\xd4\xc4'
# 通過(guò) 編碼名 utf-8 的碼表編碼,1個(gè) 漢字為 3個(gè)字節(jié),1個(gè)字節(jié)為2位16進(jìn)制
>>> c1c2.encode('utf-8')
b'\xe6\xa2\xaf\xe9\x98\x85'
>>> type(c1c2.encode('utf-8'))
<class 'bytes'>
>>> bytes(c1c2,encoding='utf-8')
b'\xe6\xa2\xaf\xe9\x98\x85'
>>> gbk_c1c2_raw=b'\xcc\xdd\xd4\xc4'
>>> utf8_c1c2_raw=b'\xe6\xa2\xaf\xe9\x98\x85'
>>> len(gbk_c1c2_raw),len(utf8_c1c2_raw)
(4, 6)
# bytes.decode(encoding) 根據(jù)編碼名 將原始字節(jié)解碼為字符串
>>> gbk_c1c2_dcd=gbk_c1c2_raw.decode('gbk')
>>> utf8_c1c2_dcd=utf8_c1c2_raw.decode('utf-8')
>>> gbk_c1c2_dcd,utf8_c1c2_dcd
('梯閱', '梯閱')
>>> str(gbk_c1c2_raw,encoding='gbk')
'梯閱'
>>> len(gbk_c1c2_dcd),len(utf8_c1c2_dcd)
(2, 2)

到此這篇關(guān)于python3.x編碼解碼unicode字符串的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)python3.x編碼解碼unicode內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

最新評(píng)論

黄骅市| 包头市| 桂平市| 临洮县| 灵石县| 碌曲县| 宁明县| 阳新县| 长海县| 江达县| 汤阴县| 临猗县| 延边| 新津县| 河西区| 文昌市| 张家口市| 福海县| 枣庄市| 襄汾县| 安福县| 陇川县| 武平县| 筠连县| 佳木斯市| 甘孜| 晋宁县| 开化县| 巩义市| 呼图壁县| 上饶县| 黄龙县| 西贡区| 武义县| 永安市| 镇雄县| 曲周县| 抚顺县| 图们市| 大田县| 浏阳市|