字符问题
- 字符串是一个字符序列
- 字符的最佳定义是Unicode字符
- decode即把字节序列转换为人类可读的文本序列;
- encode即把字符串变成用于存储和传输的字节序列;
字节概要
- Python内置两种基本的二进制序列:bytes类型和bytearray类型;
- 注意点;
- 二进制序列虽然是整数序列,但其字面量表示法中含有ASCII字符本身;
- 字节的值的表示方法;
- memoryview用于共享内存,从而在访问其他二进制序列、打包的数组和缓冲中的数据切片时无需复制字节序列;
基本编解码器
-
Python自带了超过100种编解码器;
-
不同编码器对字符的编码效果;
-
一些典型的编码类型;
编码解码问题
-
UnicodeEncodeError
把文本转换为字节序列时,如果目标编码中没有定义某个字符就会抛出该错误;
-
UnicodeDecodeError
字节序列可能会出现无效utf-8 or utf-16,所以在把二进制序列转换成文本时,遇到无法转换的字节可能会出现以上错误;
很多陈旧的编码能够解码任何字节序列流而不抛出错误,但这样得到的是无用输出;
处理文本
-
在输入的时候将字节解码为字符;
-
处理过程之中不进行编码解码操作;
-
在输出的时候将输出的文本进行编码;
-
在多台设备或者不同场合下运行的代码尽量不依赖默认编码;
-
应当传入encoding参数避免多台设备默认编码方式不同的情况;
Unicode文本排序
- Python比较任何类型的序列时会一一比较序列中的各个元素;
- 字符串比较其码位;
- 不同的排序规则会得到不同的排序结果;