如何解決 CSV 亂碼問題

2021-08-20 21:53:14 字數 1165 閱讀 9002

接上篇說的符號亂碼問題,還有一種情況下的亂碼解決方法。

參考文獻

這裡匯出的是csv格式的檔案,出現亂碼,我們先要了解csv格式

csv 逗號分隔值(comma-separated values,csv,有時也稱為字元分隔值,因為分隔字元也可以不是逗號),其檔案以純文字形式儲存**資料(數字和文字)。純文字意味著該檔案是乙個字串行,不含必須像二進位制數字那樣被解讀的資料。csv檔案由任意數目的記錄組成,記錄間以某種換行符分隔;每條記錄由欄位組成,欄位間的分隔符是其它字元或字串,最常見的是逗號或製表符。通常,所有記錄都有完全相同的字段序列。 csv檔案格式的通用標準並不存在,但是在rfc 4180中有基礎性的描述。使用的字元編碼同樣沒有被指定,但是7-bitascii是最基本的通用編碼。

上述引用  

我們主要關注是純文字格式的,使用的字元編碼沒有被指定,所以當我們匯出csv,用excel開啟的時候,會出現亂碼的原因是

為了識別 unicode 檔案,microsoft 建議所有的 unicode 檔案應該以 zero width nobreak space字元開頭。這作為乙個」特徵符」或」位元組順序標記(byte-order mark,bom)」來識別檔案中使用的編碼和位元組順序(big-endian或little-endian),具體的對應關係見下表。 

bytes              encoding       form 

00 00 fe ff      utf-32,         big-endian

ff fe 00 00      utf-32,         little-endian 

fe ff                 utf-16,        big-endian 

ff fe                 utf-16,       little-endian 

為了使我們能夠正常開啟無編碼問題的csv檔案,我們需要為csv檔案指定bom,正常轉換識別編碼

問題來了?如何在rails裡的csv檔案操作這點?

很簡單,在生成的csv檔案頭部直接新增bom

例如:csv << ["\xef\xbb\xbf id","name","age"] ..

以上是我的總結想法,或許還有些不成熟,不妥之處,請指正,謝謝。

name: eric

email: [email protected]

如何解決python爬蟲亂碼問題

直接上 import requests url html requests.get url text print html 輸出結果亂碼,可這是為什麼呢?很明顯是編碼問題造成的 import requests import sys 輸出我們編譯器所用的編碼 print sys.getdefaulte...

如何解決mysql insert亂碼的問題

問題介紹 在mysql中插入中文亂碼,或mysql中中文正常顯示,但jsp在前台顯示mysql中的中文時亂碼。解決方法 進入mysql控制台,執行下面的命令即可 set character set client utf8 set character set connection utf8 set c...

如何解決JSP頁面顯示亂碼問題

一 jsp頁面顯示亂碼 二 表單提交中文時出現亂碼 三 資料庫連線時出現亂碼 一 jsp頁面顯示亂碼 下面的顯示頁面 display.jsp 就出現亂碼 out.print jsp的中文處理 對不同的web伺服器和不同的jdk版本,處理結果就不一樣。原因 伺服器使用的編碼方式不同和瀏覽器對不同的字元...