我通过Node.js(Javascript)服务器连接到Twitter Stream,解析推文,然后将它们存储在CouchDB实例中。问题是,当我尝试写入CouchDB时,我会在40%的时间内收到此错误:
{ error: 'bad_request', reason: 'invalid UTF-8 JSON' }
当我比较成功存储的推文和不存在的推文时,看起来不同的是推文或用户描述中存在特殊字符。表情符号(心,笑脸等),亚洲语言字符等
如何在CouchDB中正确解析和存储这些推文?我认为这是一个CouchDB问题,因为当我使用Node.js将数据记录到我的控制台时,我看到了表情符号。
答案 0 :(得分:2)
事实证明,问题在于发送PUT请求时node.js中的Content-Length设置。我在编码之前计算字符串的长度,因此当Node扩展UTF8特殊字符时,它们会占用更多空间。
获得的经验教训:计算JSON对象的长度时要小心,尤其是使用特殊字符时。