在Django视图函数中经常出现类似于'ascii' codec can't decode byte 0xef in position 0: ordinal not in range(128)的错误。
在解决错误之前,首先要了解unicode和utf-8的区别。
unicode指的是万国码,是一种“字码表”。而utf-8是这种字码表储存的编码方法。unicode不一定要由utf-8这种方式编成bytecode储存,也可以使用utf-16,utf-7等其他方式。目前大多都以utf-8的方式来变成bytecode。
其次,python中字符串类型分为byte string 和 unicode string两种。
如果在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.将字符串全都转成byte string。
self.response.out.write("你好"+self.request.get("argu").encode("utf-8"))
2.将字符串全都转成unicode string。
self.response.out.write(u"你好"+self.request.get("argu"))
byte string转换成unicode string可以这样转unicode(unicodestring, "utf-8")
相关推荐
本文将深入探讨“utf8 codec can’t decode byte 0xc0 in position 0: invalid start byte”这一错误,以及如何针对Zenmap工具提供部分解决方案。 首先,让我们了解这个错误的含义。UTF-8是一种广泛使用的字符编码...
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xcc in position 0: invalid continuation byte 这个是编解码的问题,解决方法是把版本降到1.2.12就可以了,虽然records里面的中文字段还需要再次解码,但...
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd5 in position 2: invalid continuation byte-附件资源
Python中的空值用None表示,它不同于数值0。 输入和输出在Python中非常简单。input()函数允许用户输入信息,并将其存储到变量中,而print()函数则用于将信息输出到屏幕上。print()函数可以打印字符串、整数、浮点数...
basemap readshapefile UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb4 in position 0-附件资源
解决 win10下,idea提交svn报错 CRITICAL: 'ascii' codec can't decode byte 0xb0 in position 1: ordinal not in range(128) 替换 C:\Program Files (x86)\RBTools\Python27\Lib\mimetypes.py
Jupyter修改默认路径问题1、问题描述2、总结 1、问题描述 Exception while loading ... File C:\mysoftware\install\anacoda\lib\site-packages\traitlets\config\application.py, line 562, in _load_config_files
RBTools 是一个强大的工具集,专门用于帮助软件开发者与基于Review Board的代码审查系统进行交互。这个工具的主要目的是简化代码提交、更新和审查的过程,从而提高团队协作的效率。"RBTools-0.4.1.RMVD编辑"可能是这...
ascii codec can't encode characters in position ordinal not in range 128 UnicodeDecodeError: ‘utf8' codec can't decode byte 0x。 如果对于ascii、unicode和utf-8还不了解的小伙伴,可以看之前的这篇文章...
非常好用的IDE,对于自动化测试robot framework的编写有很大的作用。
我在使用python3.5处理一个序列化文件xxx.pk,不过这个.pk文件是我在python2.7...UnicodeDecodeError: 'ascii' codec can't decode byte 0xa0 in position 11: ordinal not in range(128) 解决办法: import pickle
而且很多时候你会用到一些不属于标准ASCII字符集的字符,这时候代码就很可能抛出UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xc4 in position 10: ordinal not in range(128)异常。这种异常在Python中...
类似:'ascii' codec can't decode byte 0xe8 in position 0 的报错,请修改fpgrowth.py中的CreatFPtree中的下面两种: orderedItem = [v[0] for v in sorted(localD.iteritems(), key=lambda p:(p[1], -ord(p[0]))...
在构建全功能智能车的过程中,电路图的设计是至关重要的一步,因为它构成了整个系统的"神经网络",连接并协调各个模块的运作。"全功能智能车之电路图初成型"标志着项目进入了硬件集成的关键阶段,从描述中我们可以...
为什么会报错“UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 0-1: ordinal not in range(128)”?本文就来研究一下这个问题。 字符串在Python内部的表示是unicode编码,因此,在做...
解决:进入自己本地python安装目录,修改”C:\Python27\lib\site-packages\robotide\contrib\testrunner\testrunner.py”文件方法中”return result.decode(‘UTF-8’)” 改为 “return result.decode(‘gbk’,...