我有一個相當大的數據庫(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。也許在返回結果 –