先做下科普:unicode字符编码,也是一张字符与数字的映射,但是这里的数字被称为代码点(code point), 实际上就是十六进制的数字。
python官方文档中对unicode字符串、字节串与编码之间的关系有这样一段描述:
unicode字符串是一个代码点(code point)序列,代码点取值范围为0到0x10ffff(对应的十进制为1114111)。这个代码点序列在存储(包括内存和物理磁盘)中需要被表示为一组字节(0到255之间的值),而将unicode字符串转换为字节序列的规则称为编码。
这里说的编码不是指字符编码,而是指编码的过程以及这个过程中所使用到的unicode字符的代码点与字节的映射规则。这个映射不必是简单的一对一映射,因此编码过程也不必处理每个可能的unicode字符,例如:
将unicode字符串转换为ascii编码的规则很简单--对于每个代码点:
如果代码点数值《128,则每个字节与代码点的值相同
如果代码点数值》=128,则unicode字符串无法在此编码中进行表示(这种情况下,python会引发一个unicodeencodeerror异常)
将unicode字符串转换为utf-8编码使用以下规则:
如果代码点数值《128,则由相应的字节值表示(与unicode转ascii字节一样)
如果代码点数值》=128,则将其转换为一个2个字节,3个字节或4个字节的序列,该序列中的每个字节都在128到255之间。
简单总结:
编码(encode):将unicode字符串(中的代码点)转换特定字符编码对应的字节串的过程和规则
解码(decode):将特定字符编码的字节串转换为对应的unicode字符串(中的代码点)的过程和规则
可见,无论是编码还是解码,都需要一个重要因素,就是特定的字符编码。因为一个字符用不同的字符编码进行编码后的字节值以及字节个数大部分情况下是不同的,反之亦然。
废气涡轮增压系统的故障现象
浅析HiL中智能传感器PSI5整体简介
云计算,边缘计算和雾计算:每个计算的实际应用
谷歌Pixel3a系列新机曝光 配备单摄像头支持背部指纹识别
3.5G/4G基站Serial RapidIO架构趋势的解决
Python编码与解码
什么是主板EISA总线/EIDE/DIMM
2019中国(深圳)集成电路峰会 将于8月22日在深圳举办
详解XC866步进电机阀门控制系统
莱尔德推出CM6050 系列DC/DC电源线共模扼流圈
简述一下在无线通信系统中常用的HARQ机制
Firefly-RK3399开发板介绍
如何在不牺牲质量的情况下最大化PCB生产效率
德赛杯落幕 产学研合作助力汽车电子行业腾飞
激光雷达车辆探测仍是挑战,汽车颜色是关键
二极管降压的原理 利用二极管正向压降设计的简单实用电路
苹果红色iPhone7在中国的号召力太惊人,华为荣耀V9确实差远了!
利用LabVIEW开发平台和单片机实现集成芯片测试仪的设计
Soitec携手新傲科技,扩大中国区200mm SOI晶圆产量,保障未来增长
华明FJK-1型漏电断路器原理分析