UnicodeEncodeError:'ascii'编解码器无法对特殊名称的字符进行编码[重复]
Posted
技术标签:
【中文标题】UnicodeEncodeError:\'ascii\'编解码器无法对特殊名称的字符进行编码[重复]【英文标题】:UnicodeEncodeError: 'ascii' codec can't encode character at special name [duplicate]UnicodeEncodeError:'ascii'编解码器无法对特殊名称的字符进行编码[重复] 【发布时间】:2015-09-17 04:58:43 【问题描述】:我的 python (ver 2.7) 脚本运行良好,可以从本地 html 文件中获取一些公司名称,但是当涉及到一些特定的国家名称时,它会给出这个错误“UnicodeEncodeError: 'ascii' codec can't encode character”
当这个公司名称出现时特别出错
公司名称:Kühlfix Kälteanlagen Ing.Gerhard Doczekal & Co. KG
链接无法处理
Traceback (most recent call last):
File "C:\Python27\Process2.py", line 261, in <module>
flog.write("\nCompany Name: "+str(pCompanyName))
UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 9: ordinal not in range(128)
这行代码出错:
if companyAlreadyKnown == 0:
for hit in soup2.findAll("h1"):
print "Company Name: "+hit.text
pCompanyName = hit.text
flog.write("\nCompany Name: "+str(pCompanyName))
companyObj.setCompanyName(pCompanyName)
【问题讨论】:
阅读bit.ly/unipain 任何来这里的人都应该访问***.com/questions/3828723/… 和***.com/questions/28657010/…,按照接受中的建议进行操作通常是非常糟糕的主意。 无论您在哪里写入文件或从文件读取,都必须添加编码。 open("文件名", "w", encoding=''UTF-8") 【参考方案1】:尝试在脚本开始时将系统默认编码设置为utf-8
,以便所有字符串都使用该编码。
例子-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
上面应该设置默认编码为utf-8
。
【讨论】:
现在我面临另一个错误兄弟!回溯(最后一次调用):文件“C:\Python27\Process2.py”,第 261 行,在module 'sys' has no attribute 'setdefaultencoding'
使用 export PYTHONIOENCODING=UTF-8
对我有用【参考方案2】:
你真的很想这样做
flog.write("\nCompany Name: "+ pCompanyName.encode('utf-8'))
这是unicode presentation(幻灯片 32 到 35)中描述的“延迟编码”策略。
【讨论】:
这是正确的方法,应该是公认的答案。 正确方法——正确答案以上是关于UnicodeEncodeError:'ascii'编解码器无法对特殊名称的字符进行编码[重复]的主要内容,如果未能解决你的问题,请参考以下文章
UnicodeEncodeError: 'ascii' 编解码器无法编码字符 u'\u2026'
UnicodeEncodeError: 'ascii' 编解码器无法编码字符 u'\u2013'
UnicodeEncodeError:'ascii'编解码器无法对特殊名称的字符进行编码[重复]
UnicodeEncodeError:'ascii' 编解码器无法在位置 0 编码字符 u'\xef':序数不在范围内(128)
UnicodeEncodeError:'ascii'编解码器无法在位置 3 编码字符 u'\ufffd':序数不在范围内(128)[重复]
UnicodeEncodeError:“ascii”编解码器无法在位置 126 编码字符 u'\u2019':序数不在范围内(128)