首页 > 解决方案 > 干净的推文:什么是 UTF8 和非 UTF8 字符

问题描述

我正在尝试分析从 Twitter 中提取的推文语料库。许多推文以非 UTF 字符出现。

例如,一条推文是:“[米国]一人ã®ãÆ'Â¯Ã£â€šÂ¯Ã£Æ ' ãÆ'³æœªæŽ¥ç¨®ã ®åÂ\ ã ©ã‚‚ã ‹ã‚‰å ºÆ'ã Å'㠣㠟麻疹〠㠮教訓ã₠¬â€š @ShotbyShotorg:一个未接种疫苗的孩子如何引发明尼苏达州麻疹爆发\"

我不熟悉这些非字母数字字符或如何转换/排除这些字符。这些垃圾字符还是需要转换?谢谢你。

标签: r

解决方案


我找到了原始推文:https ://twitter.com/narumita/status/476295179796611072?s=21 。从这条推文中可以清楚地看出,“垃圾”文本应该是日语。

原文如下

[米国]一人のワクチン未接受の子どもから広がった麻疹、の教训。</p>

不知何故,您的文本经历了两轮mojibake 化:它被编码为 UTF-8,解码为 Windows Code Page 1252 (CP-1252),再次编码为 UTF-8 再次解码为 CP-1252 。不幸的是,由于 CP-1252 编码无法完全解码所有 UTF-8 字节,因此无法从您发布的内容中恢复文本。然而,一个快速的 Python 脚本恢复了几个字符,足以确认它是如何被破坏的:

t = '[米国]一人㠮ワクムン未接種㠮å­\ 㠩も㠋ら広㠌㠣㠟麻疹〠㠮教訓。'
print(t.encode('cp1252', errors='replace').decode('utf8', errors='replace').encode('cp1252', errors='replace').decode('utf8', errors='replace'))

这输出:

[米国]一人���ワク�ン未感染��\���も���ら広�������麻疹���教训。</p>

已编辑:往返分析(获取原始文本并错误编码两次)显示它可能使用的是 CP-1252,而不是 ISO-8859-1;大多数代码点的编码都是相同的。该帖子已被编辑为使用 CP-1252。


推荐阅读