Mysql R控制台中的错误字符编码

Mysql R控制台中的错误字符编码,mysql,r,utf-8,character-encoding,Mysql,R,Utf 8,Character Encoding,我在从MySQL数据库获取数据后遇到编码问题。请参阅所附代码: mydb = dbConnect(MySQL(), user='root', password='', dbname='', host='localhost') dbGetQuery(mydb, "SET NAMES 'utf8'") rs = dbSendQuery(mydb, "SELECT body_prepared FROM articles") data = fetch(rs, n=-1) print(data)

我在从MySQL数据库获取数据后遇到编码问题。请参阅所附代码:

mydb = dbConnect(MySQL(), user='root', password='', dbname='', host='localhost')
dbGetQuery(mydb, "SET NAMES 'utf8'")
rs = dbSendQuery(mydb, "SELECT body_prepared FROM articles")
data = fetch(rs, n=-1)

print(data)    
internetovĂ˝ televĂ­zor mĂşdry obyÄŤajnĂ˝
使用命令
print(data)
后,我应该看到
internetovýtelevízor múdry obyčajný
(它是斯洛伐克语),但我看到
internetovĂ733; televĂzor mĂdry obyÄajnĂ

我试图通过Rgui和Rstudio运行R,但没有任何效果,结果在Rgui和Rstudio中都是一样的。 我尝试使用
enc2utf8(data[[1]])
或通过
Sys.setlocale(“LC\u CTYPE”、“en\u en.UTF-8”)
更改各种类型的编码,但这些命令没有帮助。 我认为Mysql方面存在问题,但我的专栏设置了正确的utf-8编码

我不知道哪里会出问题。这让我很生气。 你能帮我解决这个问题吗?我会非常高兴的

有关完整信息,请参阅我的会话信息:

> sessionInfo()
    R version 3.1.2 (2014-10-31)
    Platform: x86_64-w64-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=Slovak_Slovakia.1250  LC_CTYPE=Slovak_Slovakia.1250   
[3] LC_MONETARY=Slovak_Slovakia.1250 LC_NUMERIC=C                    
[5] LC_TIME=Slovak_Slovakia.1250    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] RMySQL_0.10.2 DBI_0.3.1    

loaded via a namespace (and not attached):
[1] tools_3.1.2
更新


我将
dbGetQuery(mydb,“SET NAMES'utf8'”)
重写为
dbGetQuery(mydb,“SET NAMES'cp1250'”)
,突然它显示了正确的结果。

数据存储不正确。可能文本是用utf8字节编码的,但在插入时,集合名是latin1或cp1250,列的字符集是latin1或cp1250。所有这些都正确吗?如果是这样,我们可以继续修复数据。如果没有,请提供详细信息


另外,提供
选择col,HEX(col)…
以验证存储了哪些字节。和
SHOW CREATE TABLE
查看列的详细信息。

此解决方案适合我。使用我的SQLite数据浏览器时,文本显示正确,但当我将其读入R时(语言环境设置与您的类似,尽管是1252而不是1250),所有的变音符号都有问题。下面是一个例子:

con <- dbConnect(drv = SQLite(), dbname=bdclient)
config$autres <- dbReadTable(con, "config_autres")
config$autres$msg_err_import
[1] "<h4>Un problème est survenu lors de l’importation de nouvelles données; 
    aucun rapport n’a été produit. [...]"

字符集是utf-8。我将
dbGetQuery(mydb,“设置名称‘utf8’”)
重写为
dbGetQuery(mydb,“设置名称‘cp1250’”)
,现在
打印(数据)
显示正确的结果。多谢各位。
iconv(config$autres$msg_err_import, from = "UTF-8")
[1] "<h4>Un problème est survenu lors de l’importation de nouvelles données; 
    aucun rapport n’a été produit. [...]"