29 Python - 字符与编码

字符与编码

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

 

打开读取内容,想忽略字节顺序标记

 

字节写入文件,写入字节顺序标记

 

猜你喜欢

转载自www.cnblogs.com/yijiexi/p/11140657.html