python2.7是基于ascii去处理字符流,当字符流不属于ascii范围内,就会抛出异常

在python2.7下,因为想从数据库中读出来分类名进行写入到文件,提示

Traceback (most recent call last):
File "test.py", line 28, in <module>
fp.write("%d:%s\r\n"%(sClassid,sClassName))
UnicodeEncodeError: 'ascii' codec can't encode character u'\uff08' in position 12: ordinal not in range(128


不用fp.write,用print打印却正常,这到底是怎么回来呢?

#! /usr/bin/python
# -*- coding: utf-8 -*-
import sys
print sys.getdefaultencoding();

 

运行上面的程序提示

ascii

 

原来如此,在程序的头部加上

import sys

reload(sys)
sys.setdefaultencoding('utf-8')

 

 

再次运行,错误消息。

 

总结一下,python2.7是基于ascii去处理字符流,当字符流不属于ascii范围内,就会抛出异常(ordinal not in range(128))。

posted on 2017-04-09 20:22  与非朋仔  阅读(315)  评论(0)    收藏  举报

导航