UnicodeEncodeError: 'ascii' codec can't encode character...的解决方法

在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)。

UnicodeEncodeError: 'ascii' codec can't encode character...的解决方法

原文地址:https://www.cnblogs.com/zhouxinfei/p/8157880.html

时间: 2024-11-05 23:21:18

UnicodeEncodeError: 'ascii' codec can't encode character...的解决方法的相关文章

UnicodeEncodeError: &#39;ascii&#39; codec can&#39;t encode character u&#39;\u5728&#39; in position 1

s = "图片picture"print chardet.detect(s) for c in s.decode('utf-8'): print c UnicodeEncodeError: 'ascii' codec can't encode character u'\u5728' in position 1 解决方案: reload(sys) sys.setdefaultencoding("utf8") UnicodeEncodeError: 'ascii' co

UnicodeEncodeError: ‘ascii’ codec can’t encode character u’\u8888′ in position 0: ordinal not in range(168)

在将字符串写入文件时,执行f.write(str),后台总是报错:UnicodeEncodeError: 'ascii' codec can't encode character u'\u8888′ in position 0: ordinal not in range(168),即ascii码无法被转换成unicode码.在仔细推敲后发现,我所使用的python2.7,默认编码是ascii格式.可以使用如下语句查看Python默认编码格式: >>> import sys >>

UnicodeEncodeError: &#39;ascii&#39; codec can&#39;t encode character u&#39;\u5929&#39; in position 2: ordinal not in range(128)

UnicodeEncodeError: 'ascii' codec can't encode character u'\u5929' in position 2: ordinal not in range(128) UnicodeEncodeError: 'latin-1' codec can't encode character u'\u65e0' in position 599: ordinal not in range(256) UnicodeEncodeError: 'ascii' co

Python 错误 UnicodeEncodeError: &#39;ascii&#39; codec can&#39;t encode character 的解决方案

一.使用workbook.get_sheet_by_name(name) 获取excel一个工作表时,发生字符集解析的错误. 网上搜集解决方案为添加以下三句: import sys reload(sys) sys.setdefaultencoding("utf8") Python 错误 UnicodeEncodeError: 'ascii' codec can't encode character 的解决方案

UnicodeEncodeError: &#39;ascii&#39; codec can&#39;t encode character u&#39;\u65e0&#39; in position 1: ordinal not in range(128)

UnicodeEncodeError: 'ascii' codec can't encode character u'\u65e0' in position 1: ordinal not in range(128) 上述问题解决办法 修改tool.py s = json.dumps(obj, sort_keys=True, indent=4, ensure_ascii=False)        outfile.write(codecs.encode(s, 'utf-8')) 修改后 修改前 U

解决windows环境中python2.7&#39;ascii&#39; codec can&#39;t encode character

在python2.7下,将字符串写入到文件时会出现"UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position"的错误,原因是由于python基于ASCII处理字符的,当出现不属于ASCII的字符时,会出现错误信息. 原因是pip安装python包会加载我的用户目录,我的用户目录恰好是中文的,ascii不能编码.解决办法是: python目录 Python27\Lib\site-package

python 中UnicodeEncodeError: &#39;ascii&#39; codec can&#39;t encode characters in position 0-7: ordinal not in range(128)的解决方法

SyntaxError: Non-ASCII character '\xe6' in file出现这个问题是因为中文出现在了代码中,解决方法为在代码最上面添加:#coding:utf-8 UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-7: ordinal not in range(128) 这个问题则是在程序中写入中文时出错,解决方法为在开头添加: import sys reload(sys) sy

20170427报错UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\xa0’ in position

今天写python,将网上数据流编写进文件里时遇到的,网上搜到结果并正确的进行了处理,把原文解决方法拷过来了,嘿嘿 使用Python写文件的时候,或者将网络数据流写入到本地文件的时候,大部分情况下会遇到:UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position - 这个问题. 网络上有很多类似的文件讲述如何解决这个问题,但是无非就是encode,decode相关的,这是导致该问题出现的真正原因吗?不是的.

UnicodeEncodeError: &#39;ascii&#39; codec can&#39;t encode characters in position 0-13: ordinal not i│ n range(128)

python保持网页文件遇到的错误,归根结底还是编码问题,改一下要保存的数据为utf-8就好了. 如下最简单: import sys reload(sys) sys.setdefaultencoding('utf-8') 更详细一些的python编码可以见下面文章: http://python.jobbole.com/85482/ 其实更好的解决方式是使用Python3,哼 UnicodeEncodeError: 'ascii' codec can't encode characters in