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 回答