001_Python2 的中文编码处理
最近业务中需要用 Python 写一些脚本。尽管脚本的交互只是命令行 + 日志输出,但是为了让界面友好些,我还是决定用中文输出日志信息。 很快,我就遇到了异常: Python代码 UnicodeEncodeError: 'ascii' codec can't encode characters in position 0- 3: ordinal not in range( 128) 为了解决问题,我花时间去研究了一下 Python 的字符编码处理。网上也有不少文章讲 Python 的字符编码,但是我看过一遍,觉得自己可以讲得更明白些。 下面先复述一下 Python 字符串的基础,熟悉此内容的可以跳过。 对应 C/C++ 的 char 和 wchar_t, Python 也有两种字符串类型,str 与 unicode: Python代码 # -*- coding: utf-8 -*- # file: example1.py import string # 这个是 str 的字符串 s = '关关雎鸠' # 这个是 unicode 的字符串 u = u '关关雎鸠' print isinstance(s, str) # True print isinstance(u, unicode) # True print s.__class__ # <type 'str'> print u._