R語言讀寫中文編碼方式

2021-07-03 05:39:10 字數 1900 閱讀 4903

r語言讀寫資料的方法很多,這裡主要是我在使用read.csv/read.table和write.csv/write.table時遇到的一些中文格式編碼的問題。常見的中文編碼方式兩種:gbk(gb2312)和utf-8。

windows系統下:

read.csv()和read.table()方法不指定檔案格式時,預設讀取的檔案是gbk格式。rstudio裡面有設定預設文字編碼方式,但是修改前後讀入中文資料情況都一樣。

linux(我使用的redhat)系統下:

系統指定中文編碼方式是utf-8,所以read.csv()和read.table()都要求utf-8。

如下兩個檔案,分別是utf-8格式和gbk格式,首先用read.csv讀取,可以看到不指定編碼方式時,讀取utf-8格式檔案是亂碼。用encoding指定讀取的檔案編碼方式為utf-8後,正常。這樣看起來read.csv()方法讀取utf-8好像可行?

那麼我們再來看乙個例子,相同的資料,只是最後多增加一列中文。同樣,上面三種方式,讀取utf-8的時候問題直接變成了讀取出錯,「列的數目比列的名字要多」,並且制定編碼方式為utf-8也無法拯救你了。為什麼會這樣呢?

提示意思是,列名少了,那就去掉表頭header=f就行了,結果如下,還是亂碼,並且原本四列資料讀進來後變成了七列。雖然指定encoding為utf-8後沒有了亂碼,但是讀取時行之間會錯亂。但是用fileencoding就沒有問題了!

上述,總結而言,使用read.csv()時,有中文的話,請務必保證你的檔案是gbk編碼格式的。或者用fileencoding來指定編碼格式,不要用encoding!

用同樣的資料來看read.table方法,只是需要多指定乙個sep=」,」。同樣,指定encoding無效,指定fileencoding有效。

跟read.csv一樣的問題,並且,這裡header=f也可行。read.table比read.csv更嚴格,要求行都有相同的長度,不會自動填充na。

write.csv/write.table方法可以使用,可以使用fileencoding來指定輸出檔案的編碼方式,如下,只要你的系統能識別這種方式就ok。

其實囉囉嗦嗦了這麼久,總結而言就一句話read.csv/read.table盡量讀入檔案gbk格式(win下),或者utf-8格式(linux下),不是的話,用fileencoding指定編碼格式,不要用encoding。

R語言中檔案的讀寫

1.json檔案 library jsonlite file users abcd documents diff files json test.json json1 read json path file write json json1,path file 2.yaml檔案 library ya...

R語言解決MongoDB中文編碼問題

r語言的中文支援不好,採用的編碼方式常常優先考慮西方語言,中有介紹 而mongodb中儲存的中文採用的是utf 8格式編碼,因此 p mongo.find.all mongo,ns temp unlist p 1,2 讀出的資料temp中,中文無法顯示操作 將中文改變編碼格式的函式是 encodin...

Python 檔案讀寫,中文編碼

寫入檔案 file open e baidunetdiskdownload 基礎 day11 1.txt w r讀,w寫 覆蓋 wb以二進位制寫,a寫 不覆蓋 file open r e baidunetdiskdownload 基礎 day11 1.txt w mystr yingwen file...