2、当出现UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 11: ordinal not in range(128)错误时
是因为Python2的str默认是ascii编码,和unicode编码冲突,就会报这个标题错误。那么该怎样解决呢?
加上下面几段即可
import sys
reload(sys)
sys.setdefaultencoding('utf8')
python3 区分了 unicode str 和 byte arrary,并且默认编码不再是 ascii
3、 编码杂症之在字符串前面加u ,可以print出英文和数字,但是print汉字的话就是'\u6253\u602a\u8005'的结构,要在字符串前加u才可以输出正确的汉字
有时候我们从其它地方接受的字符串经过艰难跋涉,它变了个样。比如收到的是'\u6253\u602a\u8005'而不是u'\u6253\u602a\u8005'。明明肉眼看起来只需要加个u,但是怎么加呢?
法一:用eval()
s = '\u6253\u602a\u8005'
s1 = eval('u"'+s+'"')
print s1
打怪者
法二: 用eval可以。不过这样实现太蛋疼了。 python就自带了解决方法。就是unicode-escape。
>>s = '\u6253\u602a\u8005'
>>s2 = unicode(s,'unicode-escape')
>>print s2
打怪者
4、有个跟unicode-escape齐名的东西,叫string-escape。它的作用可以说是“去掉转义,把2个反斜杠变成1个
>>s = 'hello\\nworld'