UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

在linux centos系统中使用python2.7.2对一个字符串解码然后输出,代码如下: 

s = "哈哈哈"

print s.decode('utf-8')

 

结果报了如下的错误:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

然后在代码前使用了:

import sys
reload(sys)

sys.setdefaultencoding('utf-8') 

这个编码设置,运行依然报如上错误。

从输出看,解码是没问题的,反而是编码出了问题,应该是当前环境下print时候编码出的问题

于是,将代码改为:

print (s.decode('utf-8')).encode('gb2312')

结果没问题了。

所以在使用 print 的时候,要注意环境所需的编码。 

 

 

 

posted @ 2012-11-12 00:10  vily_雷  阅读(26368)  评论(0编辑  收藏  举报