免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3384 | 回复: 7
打印 上一主题 下一主题

两行程序,在pythonShell里面可以运行,cmd下运行却报编码错误? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-04-12 11:22 |只看该作者 |倒序浏览
英文xp系统下python2.6.4,我有一个python程序叫做1.py,就2行:
s=u'\x92'
print s

在Python shell下面执行,打印一个乱码:
>>>

(这里无法拷贝出来)

但是在cmd下面却会抛出异常。
D:\>1.py
Traceback (most recent call last):
  File "D:\1.py", line 2, in <module>
    print s
  File "C:\Python26\lib\encodings\cp437.py", line 12, in encode
    return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode character u'\x92' in position 0: character maps to <undefined>

我的问题是,为什么python shell不抛异常,在cmd下面却要抛异常? 难道这两种执行方式结果还不一样么?

论坛徽章:
0
2 [报告]
发表于 2012-04-12 12:22 |只看该作者
不同工具输出编码及处理方式不同吧

论坛徽章:
0
3 [报告]
发表于 2012-04-12 13:20 |只看该作者
anonymous0502 发表于 2012-04-12 12:22
不同工具输出编码及处理方式不同吧


如何才能让cmd下面运行的1.py能够输出一个乱码,而不是抛出异常呢? 我尝试了decode的ignore参数,发现根本就不能ignore:

s=u'\x92'
print s.decode('utf-8','ignore')


这回在python shell里面都抛异常了:
>>>
Traceback (most recent call last):
  File "D:\1.py", line 2, in <module>
    print s.decode('utf-8','ignore')
  File "C:\Python26\lib\encodings\utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeEncodeError: 'ascii' codec can't encode character u'\x92' in position 0: ordinal not in range(12

难道decode函数的'ignore’参数不能工作么?

论坛徽章:
0
4 [报告]
发表于 2012-04-12 13:27 |只看该作者
本帖最后由 anonymous0502 于 2012-04-12 13:28 编辑
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-

  3. s=u'\x92'
  4. print s.encode('utf-8','ignore')
复制代码
不知道是不是这样

s=u'\x92'
print s.encode('utf-8')
这样也没报错啊

论坛徽章:
0
5 [报告]
发表于 2012-04-12 15:21 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
6 [报告]
发表于 2012-04-12 16:23 |只看该作者
anonymous0502 发表于 2012-04-12 13:27
不知道是不是这样

s=u'\x92'


为什么要print 一个encode的结果,而不是print一个decode到unicode的结果? unicode应该什么都能表示啊,怎么会有转码的问题?

论坛徽章:
0
7 [报告]
发表于 2012-04-12 16:46 |只看该作者
这个编码问题我也解释不好,你可以看看深入python3或者自己google点相关资料看看。

论坛徽章:
0
8 [报告]
发表于 2012-04-12 16:58 |只看该作者
zuiwei 发表于 2012-04-12 16:23
为什么要print 一个encode的结果,而不是print一个decode到unicode的结果? unicode应该什么都能表示啊, ...


嗯,确实要打印一个encoding之后的结果!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP