Mysql R控制台中的错误字符编码
我在从MySQL数据库获取数据后遇到编码问题。请参阅所附代码: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)
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. [...]"