【发布时间】:2019-05-30 08:54:28
【问题描述】:
我有一个包含名称表的 MySQL 数据库。一旦我将它们拉入 R,我就会遇到一些我不理解但似乎都与 R 解释文件的方式有关的编码问题。
con <- dbConnect(MySQL(),
host = 'localhost',
user = 'root',
dbname='test',
rstudioapi::askForPassword('Database password')
)
并从我的 MySQL 数据库中提取 names 表
df <- dbReadTable(con, 'names')
我的桌子看起来像
df <- structure(list(id = c(373863, 17731249), name = c("AARESTRUP, JAN CARO̸E",
"BÜTTNER, CHRISTIAN")), .Names = c("id", "name"), class = "data.frame", row.names = c(NA,
-2L))
df
id name
1 373863 AARESTRUP, JAN CARO̸E
2 17731249 BÜTTNER, CHRISTIAN
检查编码带来
Encoding(df$name)
[1] "unknown" "unknown"
使用Encoding(df$name) <- "UTF-8" 修复第二个名称,但将名称一的部分转换为非 UTF-8 字符。
df
id name
1 373863 AARESTRUP, JAN CARO<U+0338>E
2 17731249 BÜTTNER, CHRISTIAN
现在df$name[1] 返回时变得很奇怪
[1] "AARESTRUP, JAN CARO̸E" 这正是它在 MySQL 数据库中的存储方式,而当我调用整个 df 时,它的解释似乎有所不同。
首先,有没有办法确保dbReadTable() 自动读入UTF-8。我发现link 在我的表编码方面似乎没有任何改变。
其次,根据您访问名称的方式(整个 df 与单个元素),非 UTF-8 编码的解释有什么不同
【问题讨论】: