Python 2.x中的字符编码,设计的的确不好,导致初学者,甚至是即使用Python很长时间的人,都会经常遇到字符编解码方面的错误。

下面就把一些常见情,尽量的都整理出来,并给出相应的解决办法。


看此文之前

Python中字符编码所涉及的背后逻辑(从你输入字符,到终端显示字符的背后过程)

在去了解Python编码解码之前,还有个更加重要,但是很多时候却被其他解释相关知识的人所忽略的问题,那就是:

对于Python中字符串,输入输出的背后逻辑。

即,知其所以然。

 

此处就简单介绍一下,在Python中,从你所输入的字符串,到显示出字符串,这背后的过程是什么样的。

只有了解了这个大概的过程,和背后的逻辑,你才能真正理解后面的所解释的,字符串编码解码方面的错误,以及如何解决这样的错误。

 

对于你

你只是看到的是:

  • 你输入了字符串
  • 不论是从Python的IDLE中输入的
  • 还是写入到Python文件中的
  • 然后你去运行的对应代码,该Python代码,经过Python系统,(此处及之后,我称其为Python解析器),的处理
  • 使得你可以看到最终所输出的字符串
  • 不论是在Python的IDLE中看到的
  • 还是在windows的cmd中看到的。

 

对于Python解析器

而Python解析器所干的事情,就是:

  1. Python解析器,根据当前的所用的字符串编码类型
  • 不论是在Python的IDLE中,还是Python文件中
  • 都是你自己显示指定对应的编码类型的
  • 可以通过sys.getdefaultencoding()而获得,比如此处获得是:ascii
  • 如果是Python文件,如果你没声明文件编码,则使用默认的编码:UTF-8
  • 相关内容,不了解的可参考:【整理】关于Python脚本开头两行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定文件编码类型