在 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语句。将连接设置设置为使用 utf8 编码的 dplyr 方法是什么?
最佳答案
我遇到了同样的问题,我解决如下:
foo_db <- src_mysql(host='0.0.0.0',user='dbuser',password='a_password',
dbname='FlightTimes',port=3336)
dbGetQuery(foo_db$con,'SET NAMES utf8')
我发现这是可能的,通过str(foo_db)
查看foo_db
的结构,看到类有一个con
属性MySQLConnection
,然后应用您的dbGetQuery
咒语。
关于r - 如何将 dplyr::tbl 连接编码更改为 utf8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30932708/