У меня есть база данных MySQL, содержащая таблицу имен. Как только я помещаю их в R, я сталкиваюсь с некоторыми проблемами кодирования, которые я не понимаю, но, похоже, все они связаны с тем, как R интерпретировал файл.
con <- dbConnect(MySQL(),
host = 'localhost',
user = 'root',
dbname='test',
rstudioapi::askForPassword('Database password')
)
и извлеките таблицу names
из моей базы данных MySQL с помощью
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"
исправляет второе имя, но превращает части имени 1 в символ, отличный от 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
. Я нашел ссылку , которая, похоже, ничего не меняет с точки зрения моей кодировки таблицы.
Во-вторых, что происходит с разницей в интерпретации кодировки, отличной от UTF-8, в зависимости от того, как вы получаете доступ к имени (весь df против одного элемента)