Python在安装时,默认的编码是ascii,当程序中出现非ascii编码时,python的处理常常会报这样的错UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128),python没办法处理非ascii编码的,此时需要自己设置将python的默认编码,一般设置为utf8的编码格式。
查询系统默认编码可以在解释器中输入以下命令:
Python代码
- >>>sys.getdefaultencoding()
设置默认编码时使用:
Python代码
- >>>sys.setdefaultencoding('utf8')
可能会报AttributeError: 'module' object has no attribute 'setdefaultencoding'的错误,执行reload(sys),在执行以上命令就可以顺利通过。
此时在执行sys.getdefaultencoding()就会发现编码已经被设置为utf8的了,但是在解释器里修改的编码只能保证当次有效,在重启解释器后,会发现,编码又被重置为默认的ascii了,那么有没有办法一次性修改程序或系统的默认编码呢。
有2种方法设置python的默认编码:
一个解决的方案在程序中加入以下代码:
Python代码
- import sys
- reload(sys)
- sys.setdefaultencoding('utf8')
另一个方案是在python的Lib\site-packages文件夹下新建一个sitecustomize.py,内容为:
Python代码
- # encoding=utf8
- import sys
- reload(sys)
- sys.setdefaultencoding('utf8')
此时重启python解释器,执行sys.getdefaultencoding(),发现编码已经被设置为utf8的了,多次重启之后,效果相同,这是因为系统在python启动的时候,自行调用该文件,设置系统的默认编码,而不需要每次都手动的加上解决代码,属于一劳永逸的解决方法。
另外有一种解决方案是在程序中所有涉及到编码的地方,强制编码为utf8,即添加代码encode("utf8"),这种方法并不推荐使用,因为一旦少写一个地方,将会导致大量的错误报告,我曾经遇到这种情况,错误日志压缩之后尚有70多K,全都是这一个问题,让人有很崩溃的感觉。
相关推荐
UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 0-1: ordinal not in range(128) —————————- 经过网上搜索出错原因得到结果: python中如果使用系统默认的open方法打开的文件...
这是我积累的关于mysql的数据乱码的一写经验,有兴趣的可以看看
资源名称:ASCII表查询资料ASCII表查询文档,PDF版编程资料,本ASCII表查询手册列出了所有的A S C I I字符及其数值。有些A S C I I字符不能在计算机屏幕上显示出来,使用不同的字体可能会看到有些细微不同的结果。...
python 集成开发编码软件 1、先执行Python2.7.3.msi安装,安装...UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-2: ordinal not in range(128) Pysripter的解析器输出中文乱码解决方案:
UnicodeEncodeError: ‘ascii' codec can't encode characters in position 24-25: ordinal not in range(128) 有趣的是,直接在 Python 环境下运行的时候,没有这样的错误。使用 uwsgi uwsgi.in
安装Ubuntu 在Windows下可以不用重新分区,直接像安装一个应用程序...否则会出现错误信息“UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)”而无法运行。
python2.78 32位 pyscripter2.53 32位 附带Pyscripter报错的解决方法: 第一次打开就出错:UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-2
UnicodeEncodeError: 'ascii' codec can't encode characters in position 10-11: ordinal not in range(128) 解决如下: import urllib.parse reqStr = '你好' encodeStr = urllib.parse.quote(reqStr) print...
为什么会报错“UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 0-1: ordinal not in range(128)”?本文就来研究一下这个问题。 字符串在Python内部的表示是unicode编码,因此,在做...
报错:UnicodeEncodeError: 'ascii' codec can't encode characters in position x-x: ordinal not in range(128) 1.因代码中的中文注释问题的报错 django项目的.py文件文件中加入了中文注释,经常会因此报错而导致...
否则会出现错误信息"UnicodeEncodeError: ascii codec cant encode characters in position 0-3: ordinal not in range(128)'而无法运行。 三、安装 Picasa 和 Google Earth Picasa 3 for Linux 安装:访问这个...
在描述中提到的错误信息 "UnicodeEncodeError: 'ascii' codec can't encode characters in position 69-78: ordinal not in range(128)" 就是典型的表现。 为了解决这个问题,我们需要对URL中的中文字符进行编码...
在使用PySpark处理包含中文字符的数据集时,调用`DataFrame.show()`方法可能会出现“UnicodeEncodeError: ‘ascii‘ codec can’t encode characters in position”这样的错误。 **解决方案**: 为了解决上述问题...
UnicodeEncodeError: 'ascii' codec can't encode characters in position 68-73: ordinal not in range(128) ``` 这里的位置 68-73 指的是 URL 中 `"金立(Gionee)"` 这段中文字符串的位置。 #### 错误原因分析 ...