关于Python的:”unicodeencodeerror:ASCII编码字符编码不能在专用名称’ascii’ codec can’t encode character at special name

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)


尝试在脚本开始时将系统默认编码设置为utf-8,以便使用该设置对所有字符串进行编码。

示例-

1
2
3
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

上面应该将默认编码设置为utf-8


你真的想这么做

1
2
flog.write("
Company Name:"
+ pCompanyName.encode('utf-8'))

这是Unicode演示文稿(幻灯片32到35)中描述的"后期编码"策略。