解决“UnicodeDecodeError: 'ascii' codec can't decode byte 0xd7 in position 3: ordinal not in range(128”
2017-03-17 17:01
591 查看
解决“UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xd7 in position 3: ordinal not in range(128)”一类问题的新方法
问题是出来用pyinstaller转py为exe文件时出现的报错,如果是在ide中出错,就可以绕道他处寻解了,与之无关。不晓得现在还有没有人使用py2exe工具,py2exe不更新了,使用的时候特别容易出问题,动则什么文件什么依赖包就找不到了,手工都找不到。所以,当你用py2exe时,遇到了问题,五分钟解决不了,就赶紧转用其他工具,比如pyinstaller,不要再纠结了。
当用pyinstaller时,有时会出现如下报错:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd7 in position 3: ordinal not in range(128)
当然有可能,这里的byte不一样,position更有可能不一样。
这时候,不要慌张去百度后按部就班去做什么的(无非就是在文件头部加个判断转换之类的),大多数情况下,你这里的position和byte和人家的不一定一样,你照做了,固然还是有这个问题。
这时候你要做的是,认真地分析命令行的提示,
Traceback往往给出了你出错前程序封装过程的最近十几个轨迹,将轨迹的最后一个,也就是
UnicodeDecodeError错误提示的上面几行给出的运行到的位置。如:
File "D:\Python27\lib\site-packages\PyInstaller\utils\win32\winmanifest.py", line 721, in load_dom (self.filename, manifest.name)) UnicodeDecodeError: 'ascii' codec can't decode byte 0xd7 in position 3: ordinal not in range(128)
把错误文件,对应的python代码部分找出来,再根据报错信息想办法进行修改,不知道这么修改,这时候就可以百度了。
比如说我找到了这个位置,错误提示说“ascii”不能解码,说明这部分代码所用的命令让它解码出错了。我分析了一下,给两个变量加个个
str(),不让他误解码,问题就解决了。
(str(self.filename), str(manifest.name)))
遇到问题一定要静下心来,认真分析,不要像无头苍蝇似了,复制黏贴错误信息到浏览器,乱试别人的解决方法。知其然不知所以然,最后只会一团糟。
有人说py2exe太过陈旧缺少维护操作不便,推荐PyInstaller项目 www.pyinstaller.org可用一句命令打包:
pyinstaller -F -w -i manage.ico app.py -F:打包为单文件 -w:Windows程序,不显示命令行窗口 -i:是程序图标 app.py是你要打包的py文件
另外需要pywin32。安装方法:先跑
pip install pywin32再跑
pip install pyinstaller即可,多么简单。所以,尽快方法,使用麻烦,又容易出错的py2exe吧。
相关文章推荐
- 解决unicodedecodeerror ascii codec can’t decode byte 0xd7 in position 9 ordinal not in range(128)
- 解决unicodedecodeerror ascii codec can’t decode byte 0xd7 in position 9 ordinal not in range(128)
- 解决unicodedecodeerror ascii codec can’t decode byte 0xd7 in position 9 ordinal not in range(128)
- 解决unicodedecodeerror ascii codec can’t decode byte 0xd7 in position 9 ordinal not in range(128)
- 解决unicodedecodeerror ascii codec can’t decode byte 0xd7 in position 9 ordinal not in range(128)
- 解决unicodedecodeerror ascii codec can’t decode byte 0xd7 in position 9 ordinal not in range(128)
- UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 0: ordinal not in range(128) 解决
- 解决Python字符串处理出现错误UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe4 in position 108: ordinal not in range(128)
- 解决UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 0: ordinal not in range(128)
- 解决UnicodeDecodeError: 'ascii' codec can't decode byte 0x8b in position 6: ordinal not in range(128)
- python解决 'ascii' codec can't decode byte 0xe5 in position 3: ordinal not in range(128)
- 解决UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 108: ordinal not in range(128
- 解决UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe5 in position 108: ordinal not in range(128
- python 处理中文时出现的错误'ascii' codec can't decode byte 0xe9 in position 0: ordinal not in range(128)" 解决方法
- 解决UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe5 in position 108: ordinal not in range(128
- 解决UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe5 in position 108: ordinal not in range(128)
- python 处理中文时出现的错误'ascii' codec can't decode byte 0xe9 in position 0: ordinal not in range(128)" 解决方法
- python处理字符串时出现的错误'ascii' codec can't decode byte 0xe9 in position 0: ordinal not in range(128)" 解决方法
- 解决UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe5 in position 108: ordinal not in range(128
- UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 0: ordinal not in range(128) 解决