【问题标题】:Why does the MySQL Connection ignore the SET NAMES utf8 directive in R?为什么 MySQL 连接忽略 R 中的 SET NAMES utf8 指令?
【发布时间】:2014-08-27 18:46:38
【问题描述】:

我已从 R 连接到 MySQL 数据库并运行“set names utf8”指令。

library(RMySQL)
con<-dbConnect(MySQL(), user='john', password='secret', dbname='awesome', host='myhost')
dbSendQuery(con, "SET NAMES UTF8; ")

当我想从我的查询中返回 UTF8 数据时,这通常可以解决问题。然而,快速检查表明并非所有变量都已正确设置

dbGetQuery(con, "SHOW VARIABLES LIKE 'character_set_%'")
#             Variable_name                      Value
#1     character_set_client                     latin1
#2 character_set_connection                     latin1
#3   character_set_database                       utf8
#4 character_set_filesystem                     binary
#5    character_set_results                     latin1
#6     character_set_server                     latin1
#7     character_set_system                       utf8

这里显然没有设置character_set_client 变量。明确设置它也无济于事。事实上,它似乎完全忽略了它。

dbSendQuery(con, "SET character_set_client=utf8; ")
dbGetQuery(con, "SHOW VARIABLES LIKE 'character_set_%'")
#             Variable_name                      Value
#1     character_set_client                     latin1
#2 character_set_connection                     latin1
#3   character_set_database                       utf8
#4 character_set_filesystem                     binary
#5    character_set_results                     latin1
#6     character_set_server                     latin1
#7     character_set_system                       utf8

我如何设置它并使连接返回 UTF8 编码的文本?架构使用 utf8 编码和排序规则。

【问题讨论】:

    标签: mysql r utf-8 rmysql


    【解决方案1】:

    发生了握手,客户端最终告诉 MySQL 使用latin1。可以禁用握手,或者在初始连接时SET NAMES utf8

    见: http://dev.mysql.com/doc/refman/5.6/en/server-options.html#option_mysqld_character-set-client-handshake

    【讨论】:

    • 感谢您的回答和澄清为什么会发生这种情况。但是,如您所见,我在初始连接时发出“SET NAMES utf8”。但这无济于事......我可以禁用 R 的握手吗?
    • 禁用握手是一个服务器选项:skip-character-set-client-handshake
    猜你喜欢
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 2019-04-06
    • 2021-12-04
    • 1970-01-01
    • 2020-08-25
    • 1970-01-01
    相关资源
    最近更新 更多