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

Traceback (most recent call last):
  File "test.py", line 28, in 
    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))。

参考资料:
http://hjc73.blog.163.com/blog/static/1046929201364115635197/

发表评论

电子邮件地址不会被公开。 必填项已用*标注