字符与编码
01 字符串本质
Python字符串相关概念
字符串 str
字节 bytes
字节数组 bytearray
电脑字符串存储机制
字符库:A、B每个字符有一个代码点如A是65 B为66,这种是方便人类读写的形式,但是最终需要存入计算机的CPU和内存,需要转换成字节的二进制,就涉及到字节的编码。
字节的编码:如A的字节编码为b开头的b‘A’,对应的二进制为0100 0001(激素65的二进制编码)
因为ASCII编码比较简单,直接把代码点当成二进制编码来存储
将字符转换为字节的过程我们称为编码,反之称为解码;如我们最常见的ASCII编码就是负责编码和解码的工作
但是后来各个国家都有字节的字符集,就出现了很多字符集合字符编码。
不同编码并存的解决办法,就是unicode,但是这个长度固定,有点浪费空间。现在比较流行的就是utf8是可变字节即可变长的编码
02 ASCII UTF8编码
ASCII:用于常见英文字符,存在一个Byte中,0-127(即代码点)
Python插件ASCII代码点和字符互查的函数
UTF-8最通用
03 字节与文本的编码 解码
字符编码为字节
例子:
s1位字符,
使用encode(‘指定编码’)编码为字节,
其中b开头意思为字节
中文用ASCII无法编码,需要用UTF8进行编码
字节解码为字符
例子
B1位字节码
利用decode(‘指定编码’)进行解码
Python的编码和解码不指定的话,默认为UTF8
Python的文件操作如果不指定编码,默认以GBK操作(以操作系统编码为准),所以文本操作建议指定编码
04 bytes str bytesarray之间互相转换
在内存表现的永远是字符串,存储或运算过程中总以字节形式存在
001字符到字节
(1)利用字符的方法encode
(2)文本形式以二进制进行读取
(3)利用字节的bytes方法——字节大小不能超过256
002 字节到字符
003 字节数组bytearray
形式
(1)字符s1存入字节数组中,利用bytearray(字符串,编码)
(2)字节数组可以通过下标取值 可以改变值
(3)支持很多列表的很多方法
Append的值大小不能超过256
(4)字节数组转换为字符
05 字符串BOM处理
BOM字节顺序标记
有一个文件data.txt
打开读取内容,想忽略字节顺序标记
字节写入文件,写入字节顺序标记