如何将dplyr :: tbl连接编码更改为utf8?

Pau*_*eux 5 r rmysql dplyr

在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/
Run Code Online (Sandbox Code Playgroud)

本页介绍如何使用RMySQL将连接的字符集设置为utf8.

RMySQL::dbGetQuery(con,"show variables like 'character_set_%'")
RMySQL::dbGetQuery(con,"set names utf8")
Run Code Online (Sandbox Code Playgroud)

但我实际上更喜欢使用dplyr::tbl查询数据库.由于dplyr::src_mysql只创建连接,因此可以发送创建表的sql语句.将连接设置设置为使用utf8编码的dplyr方法是什么?

Pau*_*eux 1

编辑服务器选项文件(位于 Debian 系统上的 /etc/mysql/my.cnf 中)并添加以下选项:

collation-server = utf8_unicode_ci
character-set-server = utf8
skip-character-set-client-handshake
Run Code Online (Sandbox Code Playgroud)

mysql 服务器配置文件也可以使用 mysql-workbench 进行编辑。

进行此更改后,dplyr::tbl获取以 utf-8 编码的字符向量。