UnicodeEncodeError: 'ascii' codec can't encode character at special name
我的python(2.7版)脚本运行良好,可以从本地HTML文件中获取一些公司名称,但当涉及到某个特定的国家名称时,它会给出错误"unicodeencodeerror:'ascii'codec can't encode character"
当公司名称出现时,特别会出错
公司名称:K_hlfix K?格哈德·多泽卡尔公司
无法处理链接
1 2 3 4 5
| Traceback (most recent call last):
File"C:\Python27\Process2.py", line 261, in <module>
flog.write("
Company Name:"+str(pCompanyName))
UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 9: ordinal not in range(128) |
此行代码中出现错误:
1 2 3 4 5 6 7
| if companyAlreadyKnown == 0:
for hit in soup2.findAll("h1"):
print"Company Name:"+hit.text
pCompanyName = hit.text
flog.write("
Company Name:"+str(pCompanyName))
companyObj.setCompanyName(pCompanyName) |
- 读bit.ly/unipain
- 任何来到这里的人都应该访问stackoverflow.com/questions/3828723/&hellip;和stackoverflow.com/questions/28657010/&hellip;,如果不总是一个非常坏的主意,那么做接受的建议通常是不好的。
- 无论您在哪里写入文件或从文件中读取,都必须添加编码。open("文件名","w",encoding='utf-8")
尝试在脚本开始时将系统默认编码设置为utf-8,以便使用该设置对所有字符串进行编码。
示例-
1 2 3
| import sys
reload(sys)
sys.setdefaultencoding('utf-8') |
上面应该将默认编码设置为utf-8。
- 真的!!!!真管用,谢谢你!
- 现在我又犯了一个错误,兄弟!回溯(最近调用的最后一个):文件"c:python27process2.py",第261行,位于print"company name:"+hit.text file"c:python27libencodingscp437.py",第12行,位于encode返回编解码器中。charmap_encode(input,errors,encoding_map)unicodeencodeerror:'charmap'codec can't encode character u'xae'in position 2 8:character maps<未定义>
- 您已将编码更改为其他内容-charmap,因此问题出现了。
- 您可能是我遇到过的最聪明的python dev。真的那么难吗?
- 你是我的英雄!
- 这适用于python 2.x,但这并不是解决这个问题的好方法,在python 3中已被弃用。最好是正确地解码/编码数据。请参阅讨论,为什么不在py脚本中使用sys.setdefaultencoding("utf-8")。
- @martymacgyver,完全正确,这会破坏库并导致很难找到错误。事实上,这甚至没有提到,使这是一个非常危险的答案。
- 这太棒了,就像魔术一样!谢谢!
- 像魔法一样工作。太感谢了!
- 啊,经过半个小时的洗牌,在我的脚本中编码、解码和str语句。非常感谢你。
- 我同意其他评论认为这是一个潜在的危险答案,你应该正确地解码/编码。然而,如果错误是从一个你无法控制的库中产生的(在我的例子中是pyspark),这是一个方便的短期工作。
- 这不起作用:module 'sys' has no attribute 'setdefaultencoding'。
- 你就是那个人!
- 完美的解决方案谢谢
- attributeError:模块'sys'没有属性'setdefaultencoding'
- 使用export PYTHONIOENCODING=UTF-8对我很有用
- 这很有魅力。非常感谢。
- 天哪,我有3天的F*****错误,在设置代码之前无法处理…太令人沮丧了…非常感谢!
- 很好,也很简单,不必纠结于编码和解码。
你真的想这么做
1 2
| flog.write("
Company Name:"+ pCompanyName.encode('utf-8')) |
这是Unicode演示文稿(幻灯片32到35)中描述的"后期编码"策略。