【发布时间】:2015-09-05 02:46:59
【问题描述】:
在 MySQL 数据库中,表以 utf8 编码,但由于某种原因,连接是 latin1。
res <- RMySQL::dbSendQuery(con,"show variables like 'character_set_%'")
dbFetch(res)
Variable_name Value
1 character_set_client latin1
2 character_set_connection latin1
3 character_set_database utf8mb4
4 character_set_filesystem binary
5 character_set_results latin1
6 character_set_server latin1
7 character_set_system utf8
8 character_sets_dir /usr/share/mysql/charsets/
This page explain how to set the connection's character set to utf8 using RMySQL.
RMySQL::dbGetQuery(con,"show variables like 'character_set_%'")
RMySQL::dbGetQuery(con,"set names utf8")
但我实际上更喜欢使用dplyr::tbl 来查询数据库。由于dplyr::src_mysql创建的连接只能发送创建表的sql语句。 dplyr设置连接设置使用utf8编码的方式是什么?
【问题讨论】:
-
@RomanLuštrik 我已经看到了,谢谢,我还使用带有
iconv()的临时解决方案将字符列转换为 utf8,但这是一个 hack,我宁愿直接在 utf8 中读取字符向量。特别是因为数据库已经是utf8。 -
我感受到了你的痛苦。编码对于使用非 latin1 数据的每个人来说都是一个祸根。
-
我实际上通过将数据库服务器配置设置更改为 utf8 并在 /etc/mysql/my.cf 中选择选项
skip-character-set-client来解决此问题