作者StubbornLin (Victor)
看板Python
标题Re: [问题] utf-8的问题
时间Sun Feb 10 22:19:22 2008
※ 引述《hl4 (Zec)》之铭言:
: Traceback (most recent call last):
: File "C:\Documents and Settings\chiao\\WorkSpace\weather\src\weather.py",
: line 53, in <module>
: print "%s %s %s %s %s" % tuple(Parser.weather)
: UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3:
: ordinal not in range(128)
: 我用eclipse和pydev来执行的
: eclipse 的 console encoding 和 text file encoding 都改成 utf-8 了
: code的来源是这里
:
: http://victorlin.serveftp.org/programming/article/?article_id=24
: 复制下来的code,用python shell直接执行倒是正确无误
: 谢谢
我这连续好几天来都用pydev在开发,这个问题我也遇过
主要是出在於,eclipse的stdout的encoding是None
你可以分别在python shell里和pydev下跑
import sys
print sys.stdout.encoding
看看结果,一个是cp950一个是None,这似乎算是pydev现阶段的一个问题
我有找过解决方案,不过目前似乎是无解?
会错误是出在於,输出的字串编码因为是None的关系,所以似乎被编成了ascii
当然,含有中文字的字串被编成了ascii,会出错是理所当然的
解决的办法,就是在输出时手动加上编码
print ("%s %s %s %s %s" % tuple(Parser.weather)).encode('cp950')
这样编出来之後,在pydev下就不会出问题了
不过手动替每个输出都这样做还蛮麻烦的,可以考虑换掉stdout
自己写一个,把收到的资料全部都encode成cp950再交给真正的stdout试试
不知道有没有人有更好的解决办法?
--
VICTOR工作室
http://www.kinmen.info/vic/
程式设计教学
http://victorlin.serveftp.org/programming/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.116.64.132