#mysql #r #database #utf-8
#mysql #r #База данных #utf-8
Вопрос:
Я изучаю, как импортировать данные из базы данных в R. Я использовал следующий код:
library("RMySQL")
library("dbConnect")
con <- dbConnect(RMySQL::MySQL(),dbname = "database_name",host = "xyz.amazonaws.com",user="xxxxxxx",password="ghujkfgd")
dbListTables(con)
df <- "CALL get_transactions('all');"
df <- dbGetQuery(con, df)
но у данных возникли некоторые проблемы с кодировкой:
Столбец с левой стороны — это столбец, который я экспортирую из базы данных, а столбец с правой стороны — исходный столбец. Может кто-нибудь сказать мне, как я могу прочитать данные с акцентами или специальными символами из базы данных в R. TIA.
Комментарии:
1. Похоже, что данные были закодированы в Latin1, но из вашего сообщения неясно, что у вас есть сейчас. Например, в первом
<ed>
один символ напечатан в уродливом формате или это 4 символа? Что находится в базе данных, из которой вы читаете?
Ответ №1:
Я решил проблему, используя следующий код:
library(RMySQL)
library(dbConnect)
con <- dbConnect(RMySQL::MySQL(),dbname = "database_name",host = "xyz.amazonaws.com",user="xxxxxxx",password="ghujkfgd"
dbListTables(con)
df <- "CALL get_transactions('all');"
rs <- dbSendQuery(con, 'set character set "utf8"')
rs <- dbSendQuery(con, df)
data <- fetch(rs, n= -1)
dbDisconnect(con)
Ответ №2:
edf3c1e1f1fa
являются ли шестнадцатеричные коды для íóÁáñú
в CHARACTER SET latin1
.
Вероятно, что-то ожидалось UTF-8
( CHARACTER SET utf8
или utf8mb4
) и продолжалось ed
, следовательно, сказано Roc<ed>ghf
вместо Rocíghf
.
Мои заметки о R
говорят
Tool -> Global Options -> Code -> Saving and put UTF-8
rs <- dbSendQuery(con, 'set character set "utf8"')
rs <- dbSendQuery(con, 'SET NAMES utf8')
параметры (encoding = «UTF-8») в верхней части моего основного скрипта, из которого вызывается пакет.
Однако это может произойти в обратном направлении, и вам может потребоваться использовать latin1
вместо utf8
.