Python处理编码问题时老是出现以下错误:python
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128)编码
出现这个问题时强烈推荐看下下面的博客,博客里面讲的很是清楚,也很是易懂。spa
http://in355hz.iteye.com/blog/1860787code
总结下大体是:blog
python里有两种字符串类型,一种是str,一种是unicode,用引号定义的字符串就是str (如'str'),用u加引号定义的字符串就是unicode(如u'str'),若是不知道你的字符串属于那种类型,可使用以下代码进行检测:ci
string = 'hello' uni_str = u'hello' print isinstance(string, str) #输出True print isinstance(string, unicode) #输出False print isinstance(uni_str, str) #输出False print isinstance(uni_str, unicode) #输出True
而后str与unicode的转换以下:unicode
string = 'hello' uni_str = u'hello' print isinstance(string.decode('utf8'), unicode) #返回True print isinstance(uni_str.encode('utf8'), str) #返回True
若是decode或者encode使用错了,如对str使用encode,对unicode使用decode就会报上面的错误。字符串