R語言-中文亂碼解決方法

Windows的R語言經常會遇到各種各樣的中文亂碼問題,從數據庫讀取數據時,直接讀取csv數據時,進行文本分析莫名奇怪得不到想要的結果時。

讀取數據時的中文亂碼

從數據庫中讀取

當你已經把數據庫的編碼設置爲Utf-8或者其他中文編碼格式時,R語言中文讀取出現亂碼,有幾個解決的方法。一是現對數據庫和R進行設置在讀取,以RODBC,RMysql讀取數據庫爲例。 二 讀取後對編碼 編碼進行設置 ,以實例說明。

  • RODBC連接Mysql爲例 
    先配置ODBC-Mysql的中文格式,配置如下,再在讀取時進行設置參數設置讀取格式,這裏設置爲UTF8 
    設置位置 
    設置編碼

    
    ###設置參數DBMSencoding爲utf8
    
    myconn <- odbcConnect(dsn=dsn, uid=uid, pwd=pwd, DBMSencoding="UTF8") ##連接數據庫
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • Rmysql連接Mysql爲例 
    Rmysql連接數據庫出現亂碼時,讀取時先在R裏對數據庫中文編碼進行設置

    
    dbSendQuery(conn,'SET NAMES gbk')   ###先設置格式爲Gbk,然後再進行數據讀取
    • 1
    • 2
  • 讀取數據後,對其數據格式編碼進行設置

    myconn <- odbcConnect(dsn=dsn, uid=uid, pwd=pwd)
    sql <- "select * from `transport-b`.xianlu_chepai limit 5"
    data<- sqlQuery(myconn, sql)  ##從數據庫讀取格式
    data  ##查看數據
    "101璺<af>" "101璺<af>" "101璺<af>" "101璺<af>" "101璺<af>"
    Encoding(data) <- "UTF-8" ##轉換格式爲UTF-8
    data  ##查看數據
    "101路" "101路" "101路" "101路" "101路"
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

從本地讀取數據

  • 用read.csv, read.table等讀取數據 
    1 可以通過設置參數encoding進行調整,函數默認設置是“unknown” 
    2 可以通過對數據的格式進行中文編碼轉換

    
    ###方法一進行參數設置
    
    data <- read.csv(file="test.csv", enconding="utf-8")
    
    ###方法二對數據轉換中文編碼
    
    Encoding(data) <-  "UTF-8" ##轉換成UTF-8
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

R語言字符串處理需注意問題

R語言字符串處理時,一般會難以注意的一個問題。問題來自中文的編碼,在R裏既可以正常顯示,數據格式又一樣。以下面爲例:

###設置生成a,b,c,並將a,c用enc2utf8變成utf-8格式
##查看a,b,c
 a;b;c
[1] "企業"
[1] "企業"
[1] "中國最大的一家企業" "企業家應該注意的幾件事" "哈哈哈"     
##查看a,b是否存在於c中
agrep(a, c, useBytes=T)
[1] 1 2
agrep(b, c, useBytes=T)
integer(0)
##其中可以看到a,b的都是字符串"企業",但是其結果是不一樣的
str(a);str(b) ##查看結構
 chr "企業"
 chr "企業"
##這是可以考慮一下,是不是其編碼存在問題
Encoding(a);Encoding(b);Encoding(c)
[1] "UTF-8"
[1] "unknown"
[1] "UTF-8" "UTF-8" "UTF-8"
##從結果中可以看到a,b的數據結構顯示都是一樣的。
##但是其中文編碼不同,說明不注意編碼問題雖然可能不報錯,但是可能結果並不是自己想要的
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章