最新学习了R语言,对R的环境配置,数据库连接,批处理脚本等有了大概的了解。但是发现,R中的RODBC连接Mysql数据库,查询带中文的记录时会导致乱码,中文变成“?”,如图:
一开始怀疑是R console的问题,然后打印中文字符,可以正常显示:
说明不是R这个软件的编码问题,那应该是ODBC连接Mysql时出现了编码不匹配(MySql的数据库统一编码“utf8”),回忆以前使用JDBC的数据源时候,也需要加入UTF-8的编码,否则也是出现“?”的乱码现象:
jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=utf-8
那应该是DSN配置的时候,没有设置编码,百度“ODBC 连接mysql 乱码”后,找到了windows下的DSN设置编码的方法,
参考博客:http://blog.csdn.net/yuanbohx/article/details/6648397
但是Mac下的ODBC Administrator软件没有details选项,User DSN的界面如下:
点击Configure后:
这里只有key和value选项,不知道是做什么的,没有其他配置编码的地方,那应该从key和value入手了。突然找到这么一篇文章:
http://blog.csdn.net/wuliuqiba123/article/details/7534361
原来key是这么用的,可以配置很多信息,然后设置key为Charset,value为UTF-8:
再次运行R命令,发现问题更大了,R console都被卡住了:
应该是参数写的不对,反复尝试后,歪打正着,原来UTF-8和utf-8都是错的,要改为UTF8或utf8;至于key么,Charset和charset都是可以的:
这下执行R脚本,就对了!
test.txt:
library(RODBC)
channel<-odbcConnect("test",uid="root",pwd="root")
user<-sqlQuery(channel,"select * from test.user")
odbcClose(channel)