R语言-中文乱码解决方法

来源:互联网 发布:mac磁盘分区 编辑:程序博客网 时间:2024/06/08 07:04

Windows的R语言经常会遇到各种各样的中文乱码问题,从数据库读取数据时,直接读取csv数据时,进行文本分析莫名奇怪得不到想要的结果时。

读取数据时的中文乱码

从数据库中读取

当你已经把数据库的编码设置为Utf-8或者其他中文编码格式时,R语言中文读取出现乱码,有几个解决的方法。一是现对数据库和R进行设置在读取,以RODBC,RMysql读取数据库为例。 二 读取后对编码 编码进行设置 ,以实例说明。

  • RODBC连接Mysql为例 
    先配置ODBC-Mysql的中文格式,配置如下,再在读取时进行设置参数设置读取格式,这里设置为UTF8 
    设置位置 
    设置编码

    ###设置参数DBMSencoding为utf8myconn <- 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-8data  ##查看数据"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 2agrep(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的数据结构显示都是一样的。##但是其中文编码不同,说明不注意编码问题虽然可能不报错,但是可能结果并不是自己想要的
原创粉丝点击