Python错误1:'ascii' codec can't decode byte 0xef
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python错误1:'ascii' codec can't decode byte 0xef相关的知识,希望对你有一定的参考价值。
参考技术A 报错:出现’ascii’ codec can’t decode byte 0xef in position 0:ordinal not in range(128)的错误。unicode指的是万国码,是一种“字码表”。而utf-8是这种字码表储存的编码方法。unicode不一定要由utf-8这种方式编成bytecode储存,也可以使用utf-16,utf-7等其他方式。目前大多都以utf-8的方式来变成bytecode。
如果在python文件中指定编码方式为utf-8(#coding=utf-8),那么所有带中文的字符串都会被认为是utf-8编码的byte string(例如:mystr=”你好”),但是在函数中所产生的字符串则被认为是unicode string。
问题就出在这边,unicode string 和 byte string 是不可以混合使用的,一旦混合使用了,就会产生这样的错误。例如:
self.response.out.write(“你好”+self.request.get(“argu”))
其中,”你好”被认为是byte string,而self.request.get(“argu”)的返回值被认为是unicode string。由于预设的解码器是ascii,所以就不能识别中文byte string。然后就报错了。
以下有两个解决方法:
1.将字符串全都转成bytestring。
self.response.out.write("你好"+self.request.get("argu").encode("utf-8"))
2.将字符串全都转成unicodestring。
self.response.out.write(u"你好"+self.request.get("argu"))
byte string转换成unicodestring可以这样转unicode(unicodestring,"utf-8")
apply_content = unicode(dict[‘apply_content’], ‘utf-8’)
直接将str变成unicode
另外可以用type(string)检查字符串的类型是Unicode还是str类型
怎么解决python "Non-ASCII character"错误
这是编码问题,python2默认使用的编码方式是ASCII 。但是ASCII只能显示英文字母和字符,遇到中文就会报错。
处理这个错误,需要修改编码方式。一般在python程序前面加上这样一段:
# -*- coding: utf-8 -*-例如:
#!/usr/bin/python# -*- coding: utf-8 -*-
print "你好,世界" 参考技术A 在代码的第一行加入:
#-*- coding: UTF-8 -*-
以上是关于Python错误1:'ascii' codec can't decode byte 0xef的主要内容,如果未能解决你的问题,请参考以下文章
python错误之UnicodeEncodeError: 'ascii' codec can't encode characters in position 7-8: ordi
python编码错误的解决办法 SyntaxError: Non-ASCII character 'xe5' in file
解决windows环境中python2.7'ascii' codec can't encode character
python3 UnicodeEncodeError错误,cx_oracle模块执行sql报错:UnicodeEncodeError: 'ascii' codec can't