Python新手问题:中文输出出错

slawdan 2006-09-22 06:12:19
分在别的区散完了,不好意思~

只有10分~

#!usr/bin/python
# helloworld.py

print 'asd你好'
print u'asd你好'

----------------------

输出:

asdf浣犲ソ
Traceback (most recent call last):
File "E:\HELLOW~1.PY", line 5, in <module>
print u"asd浣犲ソ"
UnicodeEncodeError: 'ascii' codec can't encode characters in position 3-4: ordinal not in range(128)


问题:

1 为什么输出的是GB2312码?即使我把这个文件代码页转成了UTF-8也一样?

2 为什么第二个强制Unicode会出错?

谢谢了 :-)


环境: Python 2.5 , Windows Server 2003 简体中文版 + SP1
...全文
449 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2006-12-01
  • 打赏
  • 举报
回复
我晕

结贴时出错,导致大家都没有给上分~~~实在不好意思~~
「已注销」 2006-12-01
  • 打赏
  • 举报
回复
哦~~

谢谢各位
今天结贴~~

我在Window下用UE
xxedge 2006-09-23
  • 打赏
  • 举报
回复
楼上的方法可行
#!usr/bin/python
# -*- encoding: gb2312 -*-
# helloworld.py

print 'asd你好'
print u"asd你好"
就可以出来了
F:\00study\python\prac>helloworld.py
asd你好
asd你好
cnyifeng 2006-09-23
  • 打赏
  • 举报
回复
加上看看
# -*- encoding: gb2312 -*-
VisionCat 2006-09-23
  • 打赏
  • 举报
回复
恩,恩……

This is a good question.

为了这个问题,我还特意更新了一下我的Python。

看看你的文件保存的编码。
iambic 2006-09-23
  • 打赏
  • 举报
回复
Python解释器在默认情况下会把文件当做ascii文件,所以文件中的'asd你好'会被认作一个七字符的ascii字符串。在使用u做转换的时候,会把它转换成7字符的unicode,所以当它发现七字符中有一个不在0~127之中的时候就会报错。

明确告诉解释器你使用的文件编码,而且要使用二进制编辑器确认你使用的编码。我现在已经全力避免在Linux操作系统下直接向文件中书写中文了,要写也不用vi写,一写就错,太痛苦了。

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧