我正在使用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]"未知"
我非常绝望地想出这一点,所以非常感谢任何帮助。如果我能提供更多信息,请告诉我。
答案 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")