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