【发布时间】:2016-12-03 09:38:26
【问题描述】:
我有一个名为“segments”的表存储在 MySQL 数据库中。该表采用 UTF-8 编码(字符集 utf8,排序规则 utf8_general_ci),“标签”列包含带重音符号的字符串,如“Fidèles”、“Arrêtés”等。
我使用 R 和 RODBC 包查询该表,使用一个简单的方法:
data = sqlQuery(channel = myodbcconnection, query = "SELECT label FROM segments")
这样做会导致所有包含重音符号的字符串都被替换为 NA 值。不仅重音被填充字符取代。整个字符串变为 NA。
- 从 MySQL Workbench 运行查询返回正确的字符串,因此该表正常
- R 文件采用 utf-8 编码,来源采用 utf-8 编码等。
- ODBC 连接使用 MySQL ODBC UNICODE 驱动程序
甚至奇怪的是,如果我从 R 对数据库运行 UPDATE,则类似于:
sqlQuery(channel = myodbcconnection, query = "UPDATE segments SET label = 'Testé et approuvé' WHERE id = 70")
数据库已正确更新。但如果我选择它回来,它会返回一个 NA 值。
这快把我逼疯了。 ;-) 任何帮助将不胜感激。
【问题讨论】:
-
我尝试了
as.is和stringAsFactors的所有组合(以防万一),但无济于事。 -
我还应该补充一点,当我使用
odbcConnect创建我的 ODBC 连接时,我指定了DBMSencoding = "UTF-8"