读《Python3 是如何解决棘手的字符编码问题的》的笔记

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了读《Python3 是如何解决棘手的字符编码问题的》的笔记相关的知识,希望对你有一定的参考价值。

对于Python的编码值得注意的是不同的版本编码方式是不同的。Python3默认的是utf-8而Python2则是ASCll,因此对不同的版本对于UnicodeEncodeError和UnicodeDecodeError的处理也是不一样的!因此对于decode()和encode()的理解和使用也是不一样的!但是两个函数的使用原理是一样的!decode()就是将字节解码成字符,encode()则是相反!值得注意的是字节方便存储和网络传输,而字符用于显示。

对于Python3的编码总结:文本字符全部用 str 类型表示,str 能表示 Unicode 字符集中所有字符,而二进制字节数据用一种全新的数据类型,用 bytes 来表示。在字符引号前面就可以表示这是字节表示的对象。但是这里的局限性就是不嫩能够表示中文。

一图明了:

技术分享

该python2上场的时候了:

Python2默认的是ASCLL,str表示的字节而Unicode表示的是字符。我们要把 unicode 符号保存到文件或者传输到网络就需要经过编码处理转换成 str 类型,于是 python 提供了 encode 方法,从 unicode 转换到 str。两者转换的关系如下:

技术分享

注意的问题

文件的读写:

write:判断将要写入的是什么类型,如果是字节的话就直接写入,如果是字符的话那么它会先调用 encode 方法把 unicode 字符串转换成二进制形式的 str 类型,才保存到文件,而 encode 方法会使用 python 默认的 ascii 码来编码。

 

以上是关于读《Python3 是如何解决棘手的字符编码问题的》的笔记的主要内容,如果未能解决你的问题,请参考以下文章

python输出到文件乱码如何解决

python3 中的Json序列化反序列化 和 字符编码的问题解决

python3读文件编码错误怎么办

提升读/写 XML 文件:如何更改字符编码?

Python3编码问题详解

Python3 - 读写字节数据