Python 2.x中的字符编码,设计的的确不好,导致初学者,甚至是即使用Python很长时间的人,都会经常遇到字符编解码方面的错误。
下面就把一些常见情,尽量的都整理出来,并给出相应的解决办法。
看此文之前
Python中字符编码所涉及的背后逻辑(从你输入字符,到终端显示字符的背后过程)
在去了解Python编码解码之前,还有个更加重要,但是很多时候却被其他解释相关知识的人所忽略的问题,那就是:
对于Python中字符串,输入输出的背后逻辑。
即,知其所以然。
此处就简单介绍一下,在Python中,从你所输入的字符串,到显示出字符串,这背后的过程是什么样的。
只有了解了这个大概的过程,和背后的逻辑,你才能真正理解后面的所解释的,字符串编码解码方面的错误,以及如何解决这样的错误。
对于你
你只是看到的是:
- 你输入了字符串
- 不论是从Python的IDLE中输入的
- 还是写入到Python文件中的
- 然后你去运行的对应代码,该Python代码,经过Python系统,(此处及之后,我称其为Python解析器),的处理
- 使得你可以看到最终所输出的字符串
- 不论是在Python的IDLE中看到的
- 还是在windows的cmd中看到的。
对于Python解析器
而Python解析器所干的事情,就是:
- Python解析器,根据当前的所用的字符串编码类型
- 不论是在Python的IDLE中,还是Python文件中
- 都是你自己显示指定对应的编码类型的
- 如果是Python文件,如果你没声明文件编码,则使用默认的编码:UTF-8
- 相关内容,不了解的可参考:【整理】关于Python脚本开头两行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定文件编码类型