web-dev-qa-db-ja.com

UnicodeEncodeError: 'ascii'コーデックは特殊名の文字をエンコードできません

私のpython(ver 2.7)スクリプトは、ローカルのhtmlファイルから会社名を取得するのにうまく機能していますが、特定の国名に関しては、「UnicodeEncodeError: 'ascii' codecは文字をエンコードできません」というエラーを出します。

この会社名が来ると特にエラーになる

会社名:KühlfixKälteanlagenIng.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)
64
rhb1

スクリプトの先頭でシステムのデフォルトエンコーディングをutf-8に設定してみてください。そうすれば、すべての文字列がそれを使ってエンコードされます。

例 -

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

上記はデフォルトのエンコーディングをutf-8に設定します。

220
Anand S Kumar

本当にやりたい

flog.write("\nCompany Name: "+ pCompanyName.encode('utf-8'))

これは、この Unicode表現 で説明されている「後期エンコード」戦略です(スライド32から35)。

32
David Cullen