Linux 机器上 R MySQL 中的字符编码
Character encoding in R MySQL on Linux machine
我正在尝试获取包含一些带有变音字符的德语单词的数据。按照下面的结构,windows 机器一切正常:
Sys.setlocale('LC_ALL','C')
library(RMySQL)
conn <- dbConnect(MySQL(), user = "user", dbname = "database",
host = "host", password = "pass")
sql.query <- paste0("some query")
df <- dbSendQuery(conn, sql.query)
names <- fetch(df, -1)
dbDisconnect(conn)
例如我有:
names[1230]
[1] "Strübbel"
我应该更改什么才能在 Linux Ubuntu 中获得相同的结果?
查询 运行 没有问题,但结果是:
names[1230]
[1] "Str4bbel"
我已经检查了 This 解决方案,但是当我将 'set character set "utf8"'
放入查询中时,出现以下错误:
df <- dbSendQuery(conn, sql.query, 'set character set "utf8"')
names <- fetch(df, -1)
Error in .local(conn, statement, ...) :
unused argument ("set character set \"utf8\"")
我应该提到结果的编码是未知的:
Encoding(names[1230])
[1] "unknown"
并执行 :
Encoding(names[1230]) <- "UTF-8"
names[1230]
[1] "Str<fc>bbel"
没有解决问题![=20=]
不确定此解决方案是否对您有帮助,但您可以尝试这种方法:
con <- dbConnect(MySQL(), user = "user", dbname = "database",
host = "host", password = "pass", encoding = "ISO-8859-1")
如果此编码不起作用,请尝试使用不同的变体"brute force"
而不是:
Sys.setlocale('LC_ALL','C')
你必须使用:
Sys.setlocale('LC_ALL','en_US.UTF-8')
并在 sql 查询中:
library(RMySQL)
conn <- dbConnect(MySQL(), user = "user", dbname = "database",
host = "host", password = "pass")
sql.query <- paste0("some query")
dbSendQuery(conn,'set character set "utf8"')
df <- dbSendQuery(conn, sql.query)
names <- fetch(df, -1)
dbDisconnect(conn)
我正在尝试获取包含一些带有变音字符的德语单词的数据。按照下面的结构,windows 机器一切正常:
Sys.setlocale('LC_ALL','C')
library(RMySQL)
conn <- dbConnect(MySQL(), user = "user", dbname = "database",
host = "host", password = "pass")
sql.query <- paste0("some query")
df <- dbSendQuery(conn, sql.query)
names <- fetch(df, -1)
dbDisconnect(conn)
例如我有:
names[1230]
[1] "Strübbel"
我应该更改什么才能在 Linux Ubuntu 中获得相同的结果? 查询 运行 没有问题,但结果是:
names[1230]
[1] "Str4bbel"
我已经检查了 This 解决方案,但是当我将 'set character set "utf8"'
放入查询中时,出现以下错误:
df <- dbSendQuery(conn, sql.query, 'set character set "utf8"')
names <- fetch(df, -1)
Error in .local(conn, statement, ...) :
unused argument ("set character set \"utf8\"")
我应该提到结果的编码是未知的:
Encoding(names[1230])
[1] "unknown"
并执行 :
Encoding(names[1230]) <- "UTF-8"
names[1230]
[1] "Str<fc>bbel"
没有解决问题![=20=]
不确定此解决方案是否对您有帮助,但您可以尝试这种方法:
con <- dbConnect(MySQL(), user = "user", dbname = "database",
host = "host", password = "pass", encoding = "ISO-8859-1")
如果此编码不起作用,请尝试使用不同的变体"brute force"
而不是:
Sys.setlocale('LC_ALL','C')
你必须使用:
Sys.setlocale('LC_ALL','en_US.UTF-8')
并在 sql 查询中:
library(RMySQL)
conn <- dbConnect(MySQL(), user = "user", dbname = "database",
host = "host", password = "pass")
sql.query <- paste0("some query")
dbSendQuery(conn,'set character set "utf8"')
df <- dbSendQuery(conn, sql.query)
names <- fetch(df, -1)
dbDisconnect(conn)