在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数据存储区支持哪些编码?
谢谢!
答案 0 :(得分:1)
数据存储区需要UTF-8字节字符串或Unicode字符串。
此示例显示了在Python中保存英镑货币符号的两种方法:
http://scraperwiki.com/scrapers/unicode_test/
这同样适用于其他语言。
出于调试目的,您可以将非UTF-8 / Unicode字符串打印到控制台,并且可以删除它不理解的字符。