1

ScraperWikiでスクレイパーを作成しているときに、UTF8 でエンコードされた文字列を保存しようとすると、次のメッセージが繰り返し表示されました。

UnicodeDecodeError('utf8', ' the \xe2...', 49, 52, 'invalid data')

最終的に、試行錯誤と UnicodeDecodeError によって、ScraperWiki データストアが Unicode を想定しているように見えることがわかりました。

そのため、データストアに保存する直前に UTF-8 からデコードし、すべてを Unicode に変換しています。

    try:
         for k, v in record.items():
             record[k] = unicode(v.decode('utf-8'))
    except UnicodeDecodeError:
        print "Record %s, %s has encoding error" % (k,v)
    scraperwiki.datastore.save(unique_keys=["ref_no"], data=record)

これはエラーを回避しますが、賢明ですか? ScraperWiki データストアがサポートしているエンコーディングを確認できる人はいますか?

ありがとう!

4

1 に答える 1

1

データストアには、UTF-8バイト文字列またはUnicode文字列のいずれかが必要です。

この例は、Pythonで英ポンドの通貨記号を保存する両方の方法を示しています。

http://scraperwiki.com/scrapers/unicode_test/

同じことが他の言語にも当てはまります。

デバッグの目的で、UTF-8 / Unicode以外の文字列をコンソールに出力すると、理解できない文字が削除されます。

于 2011-02-14T09:32:14.870 に答える