このドキュメントを Python と BeautifulSoup で解析しようとしています:
http://en.wikipedia.org/w/api.php?format=xml&action=opensearch&search=rage_against_the_machine
この Text タグとして下にある 7 番目のアイテム:
レイジ・アゲインスト・ザ・マシーンの1994年から1995年のツアー
"Rage Against the Machine's 1994–1995 Tour" というテキストを印刷しようとすると、python から次のように表示されます。
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2013' in position 31: ordinal not in range(128)
次のように u'\u2013' を '-' に置き換えるだけで解決できます。
itemText = itemText.replace(u'\u2013', '-')
しかし、私がコーディングしていないすべての文字はどうですか? 私はそれらを無視したくありませんし、可能性のあるすべての検索と置換をリストしたくもありません。
確かに、一般的な既知のエンコーディングのリストからエンコーディングを検出するのが最善です (ただし、間違っている可能性があります)。
someText = getTextWithUnknownEncoding(someLocation);
bestAsciiAttemptText = someLibrary.tryYourBestToConvertToAscii(someText)
ありがとうございました