R RMySQL查询变形日文字符

时间:2016-03-04 04:52:03

标签: mysql r encoding utf-8 rmysql

我正在使用RMySQL连接到aws MySQL服务器。除了字符值变形外,它才有效。之前已经问过这个问题,但修复似乎对我不起作用。这就是我正在做的事情:

确保没有打开任何连接:

  

dbListConnections(MySQL的())   列表()

确保我的连接设置为使用UTF-8:

  

dbGetQuery(凭据,"显示变量,例如' character_set%'")

             Variable_name                                     Value
1     character_set_client                                      utf8
2 character_set_connection                                      utf8
3   character_set_database                                      utf8
4 character_set_filesystem                                      utf8
5    character_set_results                                      utf8
6     character_set_server                                      utf8
7     character_set_system                                      utf8
8       character_sets_dir /rdsdbbin/mysql-5.5.40.R1/share/charsets/

获取数据:

  

data< - dbGetQuery(credentials,Query)   头(数据)              keyword_ja   1 \ 036   2 \ 036蜀ャ   3 \ 036螟\ x8f   4 \ 036譌·譛ャ莠コ   5 \ 037繧,繝ゥケケ繝\ x88   6 \ 037锣守ゥォ

当我将这些数据写入磁盘时Excel显示相同的变形字符,但记事本++可以某种方式显示日本人的意图:

" keyword_ja"

"冬" "夏" "日本人" "イラスト" "收获"

我一直在尝试使用R中的Encoding()和enc2utf8()这样的函数来让它像notepad ++一样正确显示字符,但没有成功。

  

编码(头(数据$ keyword_ja))

     

[1]"未知" "未知" "未知" "未知" "未知" "未知"

     

enc2utf8(头(数据$ keyword_ja))

     

[1]" \ 036" " \ 036蜀ャ" " \ 036螟< 8f中;" " \ 036譌·譛ャ莠コ" " \ 037繧,繝ゥ繧ケ繝< 88>" " \ 037蜿守ゥォ"

我通常可以输入日文字符而R显示它们没有问题

  

Sys.getlocale()   [1]" LC_COLLATE = Japanese_Japan.932; LC_CTYPE = Japanese_Japan.932; LC_MONETARY = Japanese_Japan.932; LC_NUMERIC = C; LC_TIME = Japanese_Japan.932"   mystring< - "日本语入力できる"   MyString的   [1]"日本语入力できる"   编码(MyString的)   [1]"未知"

我非常绝望地想出这一点,所以非常感谢任何帮助。如果我能提供更多信息,请告诉我。

2 个答案:

答案 0 :(得分:0)

到目前为止,我发现的唯一(可怕)解决方法是使用write.csv将数据写入磁盘,然后使用data.table包中的fread将其读回。这给出了如下结果:

fread(" test.csv",encoding =" UTF-8") keyword_ja \ 036 \ 036冬 \ 036夏 \ 036日本人 \ 037イラスト

这是我想要的,它有正确的日语单词,但有一些隐藏的字符,如\ 036之前

答案 1 :(得分:0)

基于this SO article,您可能必须使用UTF-8编码数据写入磁盘。试试这个:

data <- dbGetQuery(credentials, Query)
con <- file('output.csv', encoding="utf8")
write.csv(data, file=con)

然后尝试在Excel和Notepad ++中打开output.csv并告诉我们结果。当您将此文件读回R时,它应该按预期运行:

fread("test.csv", encoding="UTF-8")