gpt4 book ai didi

sql - Linux机器上R MySQL中的字符编码

转载 作者:行者123 更新时间:2023-12-04 18:54:25 25 4
gpt4 key购买 nike

我正在尝试获取包含一些带有变音符号的德语单词的数据。遵循以下结构,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] "Str\374bbel"

我检查了 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"

不解决问题!

最佳答案

代替 :
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)

关于sql - Linux机器上R MySQL中的字符编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57113147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com