我有一个相当大的数据库(10,000多条记录,每个记录大约有120个变量)。问题是,大约一半的原始.csv文件中的变量被正确编码为UTF-8而其余的则以ANSI(Windows-1252)编码,但被解码为UTF-8,导致非ASCII字符(主要是拉丁字符)的奇怪字符,如é
或ó
。csv文件中的混合编码
我不能简单地改变文件编码,因为它的一半将被解码为错误的类型。此外,我无法知道哪些列编码正确,哪些没有正确编码,而我所拥有的就是我试图修复的原始.csv文件。
到目前为止,我发现纯文本文件可以使用UTF-8编码,并且可以推断出错误解释的字符(错误的Unicode)。一个提供这种功能的库是Python的ftfy。但是,我使用下面的代码,到目前为止,还没有成功:
import ftfy
file = open("file.csv", "r", encoding = "UTF8")
content = file.read()
content = ftfy.fix_text(content)
然而,content
将准确显示比以前相同的文本。我相信这与ftfy推断内容编码的方式有关。
不过,如果我跑ftfy.fix_text("Pública que cotiza en México")
它会显示正确的反应:
>> 'Pública que cotiza en México'
我在想,也许解决问题的方法是通过在每一个的值(细胞)进行迭代。 csv文件,并尝试修复如果与ftfy,并将文件导回到R,但它似乎有点复杂
有什么建议吗?
如果该文件是混合编码,并且您使用的是UTF-8,那么您会在所有位置都收到UnicodeDecode错误。这听起来更像是字符被错误地存储在数据库中。按照建议使用ftfy。也许在返回结果 –