R語言 UTF-8各種問題的解決方案

R語言在碰到讀UTF-8文件,或者處理UTF-8數據時總是會遇到各種各樣的問題,本姑娘也是在碰瞭n多次壁,被氣得吐血好多次之後,終於對這類總結出瞭一些解決辦法:

1. 讀UTF-8文件,例如UTF-8格式的csv:

最好的處理辦法就是:

a1=read.table('C:\\test11.csv',sep=',',fileEncoding = 'UTF-8',header = F)

如果使用如下方法可能會出錯(全是血淚教訓啊):

a2=read.csv('C:\\test11.csv',fileEncoding = 'UTF-8',header = F)
a2=read.csv('C:\\test11.csv',encoding = 'UTF-8',header = F)

2. 如何在R裡把一個數據轉化為UTF-8格式:

因為我在R裡寫瞭一段程序,需要把數據轉化為JSON格式,通過上面的方法讀進來的數據是沒有問題,但是數據再R裡並不是utf-8格式存儲的,所以toJSON()時報瞭如下錯誤:

unable to escape string. String is not utf8

後來發現R裡有一個函數可以把數據轉為utf8格式:enc2utf8()

> a='小源'
> Encoding(a)#查看a的編碼格式
[1] "unknown"
> b=enc2utf8(a)
> Encoding(b)
[1] "UTF-8"

3. 如何SOURCE一個UTF-8格式的R文件:

source一個utf8編碼保存的R腳本,在windows下(linux由於默認編碼就是utf8,直接source就可以)

source('test.R',encoding = 'UTF-8')

補充:mac系統csv亂碼_R語言寫入UTF-8格式CSV亂碼解決辦法

中文編碼方式有GBK(GB2312)和UTF-8兩種。

由於區域設置問題,在Windows系統下,Excel程序默認用GBK格式讀取CSV文件。

因此會導致亂碼。

如下圖所示:

eb163b05995ec24dd3c026ef2a1c76bf.png

解決的辦法是用tidyverse包中的write_excel_csv()函數。

下面上代碼:

library(tidyverse)
x <- c('好好地', '針對是棒極啦', '哈好好好好好愛吼吼吼啊', '啊')
y <- c(1, 2, 3, 4)
z <- c('haha', 'hehe', 'hoho', 'lala')
xyz_tbl <- tibble(x,y,z)
        read_csv(file = 'data1.csv', )
#亂碼
write.csv(xyz_tbl,'data_old.csv',row.names = T,fileEncoding='UTF-8')
#再次亂碼
write_csv(xyz_tbl, 'data.csv')
#解決問題
write_excel_csv(xyz_tbl, 'data_ex.csv')
#以上文件用R讀取都沒問題
read_csv(file = 'data.csv')
read_csv(file = 'data_ex.csv')
read_csv(file = 'data_old.csv')

50379635e55fa90a3e6ca3a1e03204a2.png

原數據

3eaf7b79d1df09ea9d48bb785f391c3c.png

data.csv

436a7bb6de0de69e2e81f7c9de54d95d.png

data_ex.csv

56c00a36b452d70dde655a0447c360c0.png

data_old.csv

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。

推薦閱讀:

    None Found