python的编码转换

python3 内存中使用的字符串全部是 unicode 码,但是网络传输的数据或者从磁盘读取的数据是把 unicode 码转换过的数据,通常情况下可能是 utf-8 格式的数据,所以如果从网络中读取或者磁盘中读取其实就是把 utf-8 格式的数据解码成 unicode 码数据,相反如果想把内存中 unicode 码数据存储到磁盘或者网络中需要对 unicode 码进行编码,通常可以采用 utf-8 的形式进行编码

在python3中执行

>>> sys.getdefaultencoding()  #python3
'utf-8'

>>> sys.getdefaultencoding()  #python2
'ascii'
  • 二进制 -> 转换 -> 字符串 需要解码 decode
  • 字符串 -> 转换 -> 二进制 需要编码 encode

 

ord与chr

python3中使用chr()将Unicode对应的字符打印出来.  python3默认使用Unicode码  python3默认使用utf-8码

但是在python2中 chr(0~255)中的对应范围只是ASCII码的范围(0~255).

>>> for i in range(19968,40869):   ##将所指定的汉字打印出来
...     print(chr(i),end='')
... 
一丁丂七丄丅丆万丈三上下丌不与丏丐丑丒专且丕世丗丘丙业丛东丝丞丟丠両丢丣两严並丧丨丩个丫丬中丮丯丰丱串丳临丵丶丷丸丹为主丼丽举丿乀乁乂乃乄久乆乇么义乊之乌乍乎乏乐乑乒乓乔乕乖乗乘乙乚乛乜九乞也习乡乢乣乤乥书乧乨乩乪乫乬乭乮乯买乱乲乳乴乵乶乷乸乹乺乻乼乽乾乿亀亁亂亃亄亅了亇予争亊事二亍于亏亐云互亓五井亖亗亘亙亚些亜亝亞亟亠亡亢亣交亥亦产亨亩亪享京亭亮亯亰亱亲亳亴亵亶亷亸亹人亻亼亽亾亿什仁仂仃仄仅仆仇仈仉今介仌仍从仏仐仑仒仓仔仕他仗付仙仚仛仜仝仞仟仠仡仢代令以仦仧仨仩仪仫们仭仮仯仰仱仲仳仴仵件价仸仹仺任仼份仾仿伀企伂伃伄伅伆伇伈伉伊伋伌伍伎伏伐休伒伓伔伕伖众优伙会伛伜伝伞伟传伡伢伣伤伥伦伧伨伩伪伫伬伭伮伯估伱伲伳伴伵伶伷伸伹伺伻似伽伾伿佀佁佂佃佄佅但佇佈佉佊佋佌位低住佐佑佒体佔何佖佗佘余佚佛作佝佞佟你佡佢佣佤佥佦佧佨佩佪佫佬佭佮佯佰佱


>>> chr(0x4E00)   ##使用16进制   前面加 0x
'一'
>>> 
>>> chr(19968)
'一'
>>> ord('一')     ##反编译
19968

 

在golang中,使用fmt.Println(string(19968)) 可以直接将汉字打印出来

 

python 字符串转换成字节三种方式
str='cheng_cheng'

第一种 b'cheng_cheng'
第二种bytes('cheng_cheng',encoding='utf-8')
第三种('cheng_cheng').encode('utf-8')

对于汉字来说,  utf-8编码每个汉字占3个字节,   Unicode编码每个汉字占6个字节, 对于英文字符来说,utf-8编码和 Unicode编码占的字节数都一样

>>> bytes('一',encoding='unicode_escape')  ##转成Unicode码
b'\\u4e00'
>>> 
>>> '一'.encode('unicode_escape')   ##转成Unicode码
b'\\u4e00'

++++++++++++++++++++++++++查看汉字Unicode码占字节大小+++++++++++++++++++++++++++++++++++
>>> len(bytes('一',encoding='unicode_escape'))  ##查看占的字节大小
6
>>> len(bytes(u'一二',encoding='unicode_escape'))   ##查看占的字节大小
12

++++++++++++++++++++++++++查看汉字utf-8码占字节大小+++++++++++++++++++++++++++++++++++
>>> ('一').encode('utf-8')   ##转成utf-8码
b'\xe4\xb8\x80'
>>> len(('一').encode('utf-8'))   ##查看占的字节大小
3
>>> len(('一二').encode('utf-8'))   ##查看占的字节大小
6
++++++++++++++++++++++++++查看英文utf-8码和Unicode码占字节大小++++++++++++++++++++++++++++++
>>> len(('a').encode('utf-8'))
1
>>> len(('ab').encode('utf-8'))
2
>>> 
>>> len(('a').encode('unicode_escape'))
1
>>> len(('ab').encode('unicode_escape'))
2


 

 

 

汉字 Unicode 编码范围

 

字符集字数Unicode 编码
基本汉字20902字4E00-9FA5
基本汉字补充74字9FA6-9FEF
扩展A6582字3400-4DB5
扩展B42711字20000-2A6D6
扩展C4149字2A700-2B734
扩展D222字2B740-2B81D
扩展E5762字2B820-2CEA1
扩展F7473字2CEB0-2EBE0
康熙部首214字2F00-2FD5
部首扩展115字2E80-2EF3
兼容汉字477字F900-FAD9
兼容扩展542字2F800-2FA1D
PUA(GBK)部件81字E815-E86F
部件扩展452字E400-E5E8
PUA增补207字E600-E6CF
汉字笔画36字31C0-31E3
汉字结构12字2FF0-2FFB
汉语注音43字3105-312F
注音扩展22字31A0-31BA
1字3007

Unicode 是全球文字统一编码。它把世界上的各种文字的每一个字符指定唯一编码,实现跨语种、跨平台的应用。

中文用户最常接触的是汉字 Unicode 编码。中文字符数量巨大,日常使用的汉字数量有数千个,再加上生僻字,数量达到数万个。这个表格将中文字符集的 Unicode 编码范围列出,点击字库条目可见具体字符。若要查询具体字符的编码请前往:汉字字符集编码查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值