很多同学对于编码问题都不是很清楚,计算机常见的编码格式为: ASCII ISO-8859-1 GB2312 GBK UTF-8 UTF-16 对于Python开发中,我们一般都是采用统一的编码格式:UTF-8 第一行加入环境申明: #coding=utf-8 编码操作方式一般都分为:编码(encode)和解码(decode) 但是对于今天我们所要讲解的主角Python来说: unicode和str两种类型的相互转换则为解码和编码。如下列子:
列子中可以看出,不同的编码格式的输出的字符是不一样的字符表达,我们在使用编码和解码的时候都需要采用同一种编码格式进行两者操作,否则就报错。 pritn中文编码问题 如下图: python打印变量时,操作系统会对变量进行相应的处理,若变量是str类型,则操作系统直接发送到终端显示,若变量是unicode类型,则操作系统会对变量用sys.stdout.encoding编码对变量encode,若变量中含有sys.stdout.encoding未定义字符,则会出现UnicodeEncodeError。编码后字节序列被发送给终端,假若终端设置的编码和str编码不一致,终端就会显示出乱码。 两种错误情况: 1:UnicodeEncodeError 若变量中含有sys.stdout.encoding未定义字符则会出现如上错误。一般避此个错误的方式就是:
首先打印出本地环境的编码格式,然后在字符串编码的时候就现在对应的编码格式进行编码和解码。
接下来我们来从实例中看看,编码和解码的用法。
总结,Python3中编码问题比Python2有了很多改善。 3中的编码我们只需要记住一点,打开读取文件的时候一定要声明编码格式,开发编程前都提前设置好环境编码,一般都是默认的utf-8格式,解码和编码都使用统一的编码格式进行操作,这样就能保存文件操作的时候不会出现编码。 |
|