文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

简明字符编码

2023-01-31 08:19

关注
原文来源 https://www.jmjc.tech/tutoria...

我们在显示屏上看的字母a、b、c...最终都会被转换成0/1序列, 因为计算机只能识别0和1。从数字到字母的转换都过程,计算机需要依赖于一个类似于字典的东西,它是权威标准的,每一台计算机都要按照它都规定,最早诞生的字典,名为ASCII


ASCII

一个字节(byte)是8位的二进制0000 0000,总共代表256种状态。最初的计算机只流行于英语国家,英文的字母大小写总共是52个,加上一些常用的符号,数字,这个字典的长度是128位,所以ASCII占用一个字节

【 ASCII对照表 】


后来,计算机发展到了世界各地,只表示英文和数字的ASCII已经满足不了各国的需求,大家纷纷发展出自己语言的字典,比如中国的GBK。 这样很有问题,夹杂着各种语言的文档,经常会被解析出来一大堆 乱码。为了统一,大家商议决定,制定一个通用的字典unicode


unicode

unicode是在ASCII的基础上扩展的,对原有ASCII字符完全兼容。长度上从原来的0000 0000,扩展到了0000 0000 0000 0000,占用2个字节,可以容纳65535个字符。

# ASCII 字母 A
0110 0001 # 十进制 = 97

# unicode 字母 A 
0000 0000 0110 0001 # 十进制 = 97 | ASCII字符就在前面补8位的0

UTF-8

unicode是一个字典,也叫字符集,是信源编码。而UTF-8是信道编码,我们数据在传输的时候,都会被解析成UTF-8。

UTF-8是在unicode的基础上,进行编码和解码,针对unicode传输实现的编码还有UTF-16 / UTF-32等...

UTF-8是变长的,不同的文字有不同的长度,英文字母一般是1 byte,汉字是3 byte。


Python 的字符编码

Python3之前的Python版本,使用的是ASCII编码,所以对中文的支持很头,现在已经原生的支持unicode

# 正 unicode
>>> ord('a')
97

# 反 unicode
>>> chr(97)
'a'

# 中文
>>> ord('哦')
21734

编码解码

 # 编码
>>> 'a'.encode('utf-8')
b'a'

>>> '哦'.encode('utf-8')
b'\xe5\x93\xa6'

# 解码
>>> b'\xe5\x93\xa6'.decode('utf-8')
'哦'

byte

二进制数据类型,1 byte是8位的二进制0000 0000。

>>> len('哦') # 1个字符
1

>>> len('哦'.encode('utf-8')) # 3个字节
3

# 以上是字节和字符的关系
阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯