【问题标题】:UTF8 Error in dbWriteTable to MySqldbWriteTable 到 MySql 中的 UTF8 错误
【发布时间】:2016-08-07 19:24:25
【问题描述】:

我正在尝试将导出 csv 数据写入 mysql 表。在将数据读入 R 时,我使用了以下命令

read.csv("mpnov.csv", header = T, stringsAsFactors = F, encoding = "UTF-8")

存储到对象“df”中。

可重现的例子如下:

structure(list(ARTICLE_ID = c("4.45e+11", "4.45e+11", "4.45e+11"
), HEADLINE = c("TWEET FROM: DHYANI1811", "TWEET FROM: THE_PARALLEL_ME", 
"TWEET FROM: IMRITIKTHAKUR"), AUTHOR = c("DHYANI1811", "THE_PARALLEL_ME", 
"IMRITIKTHAKUR"), CONTENT = c("@myntra Good Morning If you are born poor its not your mistake, But if you die poor its your mistake. -Bill Gates Good Day", 
"@myntra i have been mailing my issue daily since past week.All i get in reply is an auto generated assurance mail. 1st time pissed wd myntra", 
"@myntra I'm a big Arsenal fan & made a big PUMA collection! ‚_ Shared that collection yesterday. Wanna win... ‚_‚_‚_ #myPUMAcollection"                    
), MEDIA_PROVIDER = c("TWITTER", "TWITTER", "TWITTER")), .Names = c("ARTICLE_ID", 
"HEADLINE", "AUTHOR", "CONTENT", "MEDIA_PROVIDER"), row.names = c(NA, 
3L), class = "data.frame")

CONTENT 列有特殊字符,阻止我将此数据导出到 mysql。我尝试使用以下代码在数据库和表级别将 utf8 设置为 utf8_general_ci。

ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

这似乎不起作用。

我已将上述代码中的general改为unicode。

ALTER DATABASE databasename CHARACTER SET utfu COLLATE utf8_unicode_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

我试过SET NAMES cp850

我已经多次删除数据库和表并在创建数据库时尝试:

create database dbname character set utf8;

我也试过上面的代码,把utf8_unicode_ci改成utf8mb4_unicode_ci

似乎没有任何效果,随着时间的推移,我失去了客观性。有人可以帮忙吗?

【问题讨论】:

  • hm CONTENT 字段似乎很好,就“有效的 UTF8”而言,即 hexutf8.com/… 似乎还有另一个问题在起作用

标签: r rmysql


【解决方案1】:

MySQL:

show variables like ‘character_set_%’;
SET character_set_database=”utf8”;
SET character_set_server=”utf8”;

似乎 dbWriteTable() 在 Windows 上使用 utf-8 编码存在问题。

你也可以走另一条路:

R:

dbSendQuery(con,'SET NAMES utf8') 
dbSendQuery(conn,"INSERT INTO tablename(fffff) values('xxxxx')");

【讨论】:

    猜你喜欢
    • 2016-05-31
    • 1970-01-01
    • 2014-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-01
    • 2014-12-12
    • 1970-01-01
    相关资源
    最近更新 更多