ScraperWiki数据存储区期望的编码是什么?

时间:2011-02-13 14:34:38

标签: python screen-scraping scraperwiki

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数据存储区支持哪些编码?

谢谢!

1 个答案:

答案 0 :(得分:1)

数据存储区需要UTF-8字节字符串或Unicode字符串。

此示例显示了在Python中保存英镑货币符号的两种方法:

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

这同样适用于其他语言。

出于调试目的,您可以将非UTF-8 / Unicode字符串打印到控制台,并且可以删除它不理解的字符。