我下载了我的Facebook messenger数据(在您的Facebook帐户中,转到设置,然后转到您的Facebook信息,然后下载您的信息,然后创建一个至少选中消息框的文件)以进行一些很酷的统计
然而,编码有一个小问题。我不确定,但看起来Facebook对这些数据使用了错误的编码。当我用文本编辑器打开它时,我会看到如下内容:Rados\u00c5\u0082aw
。当我尝试用python(UTF-8)打开它时,我得到RadosÅ\x82aw
。但是我应该得到:Radosław
。在
我的python脚本:
text = open(os.path.join(subdir, file), encoding='utf-8')
conversations.append(json.load(text))
我尝试了几种最常见的编码方式。示例数据为:
^{pr2}$
我确实可以确认Facebook下载数据的编码不正确;Mojibake。原始数据是UTF-8编码的,但被解码为拉丁语-1。我一定要提交一份错误报告。在
同时,您可以通过两种方式修复损坏:
将数据解码为JSON,然后将任何字符串重新编码为Latin-1,再次解码为UTF-8:
以二进制形式加载数据,将所有
^{pr2}$\u00hh
序列替换为最后两个十六进制数字表示的字节,解码为UTF-8,然后解码为JSON:根据您的示例数据,这将产生:
基于@Martijn Pieters解决方案,我用Java编写了类似的东西。在
unescape方法的灵感来自org.apache.commons网站.语言字符串. 在
^{pr2}$我的解析对象的解决方案使用^{} callback on load/loads 函数:
更新:
用字符串分析列表的解决方案不起作用。以下是最新的解决方案:
^{pr2}$相关问题 更多 >
编程相关推荐