用“讲故事”的方式,带你认识Python编码问题起源和发展!(二)

简介: 用“讲故事”的方式,带你认识Python编码问题起源和发展!(二)

3. 编码知识总结

1)字符编码发展史

image.png


2)以小写字母a为例,说明字符编码

image.png


3)带着大家写写代码,认识一下字符编码

① 关于Python2和Python3的区别

在Python2中,默认字符编码是ASCII码,因此在Python2中写中文,首行一般都会加上-- coding:utf-8 --,看了这篇文章,我想你对这个东西已经有了一个清楚的认识。但是Python2现在已经停止更新了,我们了解即可,不用太关注。


对于Python3.x来说,默认字符编码是utf-8,而utf-8是Unicode的扩展集。即Python3.x中默认所有的字符都是Unicode。说白点,我们在Python3.x中随便写点啥,编码就是Unicode编码。


对比Python2和Python3:


# 在Python2中如果要表示Unicode编码,应该这样写。
my_name = u"黄伟"
# 在Python3中如果要表示Unicode编码,应该这样写。
my_name = "黄伟"


说到这里,我们可以下一个结论:不同编码之间的转换,都要经过一个Unicode。


② encode编码和decode解码


>>> name1 = "我是你们的teacher老师"
>>> name2 = "你们是我的student学生"
>>> # 将name1编码为“utf-8”
>>> name1_encode = name1.encode("utf-8")
>>> name1_encode
b'\xe6\x88\x91\xe6\x98\xaf\xe4\xbd\xa0\xe4\xbb\xac\xe7\x9a\x84teacher\xe8\x80\x81\xe5\xb8\x88'
>>> # 将name1_encode解码还原
>>> name1_encode.decode("utf-8")
'我是你们的teacher老师'
---------------------------------------------------------
>>> # 将name2编码为“gbk”
>>> name2_encode = name2.encode("gbk")
>>> name2_encode
b'\xc4\xe3\xc3\xc7\xca\xc7\xce\xd2\xb5\xc4student\xd1\xa7\xc9\xfa'
>>> # 将name2_encode解码还原
>>> name2_encode.decode("gbk")
'你们是我的student学生'
-------------------------------------------------
>>> # name1_encode此时是“utf-8”编码,如果用“gbk”解码,会出现什么?
>>> name1_encode.decode("gbk")
'鎴戞槸浣犱滑鐨則eacher鑰佸笀'
# 上面就是我们常说的乱码、乱码、乱码!


代码分析: 从代码中可以看出,如果是utf-8编码,每个中文字符就是3个字节存储。如果是gbk编码,每个中文字符就是2个字节存储。


相关文章
|
23天前
|
存储 Python
Python文件编码概念详解
Python文件编码概念详解
20 1
|
1月前
|
存储 文件存储 Python
python进制和编码
python进制和编码
|
1月前
|
Java 编译器 C语言
python安装、输入输出、注释、中文编码、编码规范等基础语法
python安装、输入输出、注释、中文编码、编码规范等基础语法
|
1月前
|
存储 移动开发 算法
Python怎么将图片转换成base64编码
Python怎么将图片转换成base64编码
53 0
|
1月前
|
机器学习/深度学习 运维 Python
python深度学习实现自编码器Autoencoder神经网络异常检测心电图ECG时间序列
python深度学习实现自编码器Autoencoder神经网络异常检测心电图ECG时间序列
|
9天前
|
Python IDE 开发工具
【Python贪吃蛇】:编码技巧与游戏设计的完美结合
【Python贪吃蛇】:编码技巧与游戏设计的完美结合
|
25天前
|
存储 Python
Python中文编码
Python中文编码
|
14天前
|
自然语言处理 Python
Python 中的编码与解码字符集与 Unicode 的详解
【6月更文挑战第10天】Python编程中,理解字符编码(如ASCII、UTF-8)和Unicode至关重要,它们关乎文本数据的正确处理。编码是字符转字节,解码则相反。UTF-8能表示几乎所有字符,适合多语言。Unicode为全球字符提供唯一编码。处理不同源文本时,需注意编码一致性,否则可能产生乱码。Python支持Unicode,但错误的编码解码操作可能导致问题。要确保程序处理文本的正确性,需选合适编码方案并保持编码一致性。
|
14天前
|
存储 算法 数据挖掘
【贪心算法经典应用】哈夫曼编码原理与算法详解 python
【贪心算法经典应用】哈夫曼编码原理与算法详解 python
|
1月前
|
Python
python编码和解码
【5月更文挑战第8天】
19 4