设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 10825|回复: 3
打印 上一主题 下一主题

关于“UnicodeDecodeError: 'ascii' codec can't decode byte 0xd7 in..."

[复制链接]

9

主题

0

好友

133

积分

注册会员

Rank: 2

跳转到指定楼层
楼主
发表于 2016-4-26 14:51:12 |只看该作者 |倒序浏览
本帖最后由 hymyg 于 2016-5-24 09:09 编辑

  一个程序在本机运行正常,使用py2exe编译成.exe文件在本机运行也正常,将.exe文件发布到其他机器上运行到最后就提示“UnicodeDecodeError: 'ascii' codec can't decode byte 0xd7 in position 32: ordinal not in range(128)”,后来发现是编码问题靠成的故障。

原来的代码是:
  1. print('\n'+u'数据整理完毕,共找到'+str(count_no)+u'条记录,已输出到“' +dir_name+'\\'+os.path.splitext(file_name)[0]+u'.fdt”文件中。\n\n按任意键退出程序。\n')
复制代码
修改编码为:
  1. print('\n'+u'数据整理完毕,共找到'+str(count_no)+u'条记录,已输出到“' +dir_name.decode('cp936')+'\\'+os.path.splitext(file_name)[0].decode('cp936')+u'.fdt”文件中。\n\n按任意键退出程序。\n')
复制代码
至此问题解决。
回复

使用道具 举报

174

主题

45

好友

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

沙发
发表于 2016-4-27 13:08:19 |只看该作者
这是python2很容易遇到也很让人头疼的问题。即使加了cp936,也只能保证在windows下运行正常。
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

9

主题

0

好友

133

积分

注册会员

Rank: 2

板凳
发表于 2016-5-24 09:09:27 |只看该作者
crossin先生 发表于 2016-4-27 13:08
这是python2很容易遇到也很让人头疼的问题。即使加了cp936,也只能保证在windows下运行正常。 ...

只能增加判断系统的语句,然后根据判断使用代码页,或是直接标明For Windows
回复

使用道具 举报

174

主题

45

好友

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

地板
发表于 2016-5-24 11:02:20 |只看该作者
hymyg 发表于 2016-5-24 09:09
只能增加判断系统的语句,然后根据判断使用代码页,或是直接标明For Windows ...

也可以用这个
  1. import sys
  2. sys.getfilesystemencoding()
复制代码
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-12-21 19:49 , Processed in 0.015241 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部