第五篇:python的字符和编码

常见编码的种类

ASCII:一开始计算机是这种编码的,但只用英文,中文不兼容
||
||
\/
Unicode:万国码,好多种语言都包含在里面,但有时候(当英文时)占内存
||
||
\/
UTF-8:比较完美的编码,英文还是1个字节,中文一般3个字节

注:8个比特(bit)作为一个字节(byte)

三种编码的占字节数:

语言 ASCII Unicode UTF-8
英文 1个字节 2个字节 1个字节
中文 X 占2个字节(偏僻字占4个字节) 占3个字节(偏僻字占4~6字节)

ASCII是最开始的编码,只有英文。当然计算机不可能就说英语的国家用吧,随后出现了Unicode,从上面表看出,但如果全英文的使用Unicode的话,那就要多一半内存吧,所以就有了UTF-8,英文的还是只用一个字节。

现代计算机编码方式

以下这个一段,说得很简单易懂,引用来自廖雪峰老师的博客

在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。
用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件:
这里写图片描述
浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器
这里写图片描述

python3的编码

首先,认准一个基准:python3的字符串str使用了Unicode编码。
如果在网络上传输或保存到磁盘上的话,就需要把str转为bytes,使用encode()函数。另外,bytes一个字符只占一个字节。

如果是从网络、磁盘上读取字节流,读到的数据为bytes类型,可以使用decode()函数对其进行转换。
这里写图片描述

相关的3个函数

ord():获取字符的整数表示;
chr():把编码转换为对应的字符;
len():如果是str就计算其字符数,如果是bytes就计算其字节数。

>>>str = '博客'
>>>print(len(str))
>>>2
str = '博客'
# 用encode()转为bytes类型
print('>>>',len(str.encode('utf-8')))
>>> 6

在python的学习过程中,字符编码的转换是非常重要的,如果熟悉python中的编码,我们在解决问题的时候,就可以事半功倍了。

猜你喜欢

转载自blog.csdn.net/zer021/article/details/79882889
今日推荐