Невозможно изменить кодировку во фрейме данных в R

Я пытаюсь импортировать базу данных в R для преобразования и загрузки обратно в другую базу данных. Я извлекаю свой набор из RDS Mysql с помощью:

con <- dbConnect(MySQL(),
                   user = 'user',
                   password = 'password',
                   host = 'url',
                   dbname='dbName')

sqlcmd = paste("SELECT * FROM dbName.`users`");

contentTable = dbGetQuery(con,sqlcmd);

contentTable["first_name"]

что приносит мне этот неудачный вывод

  first_name
1     Sergio
2       Sara
3   J\xfalia
4    Tatiana
5      Paula

Моя проблема в том, что третье имя должно вернуться как Джулия. Эта проблема возникла и в других рядах.

Моя локаль установлена ​​​​следующим образом.

> Sys.getlocale()
[1] "pt_PT.UTF-8/pt_PT.UTF-8/pt_PT.UTF-8/C/pt_PT.UTF-8/en_US.UTF-8"

и символ по умолчанию для сервера

# Variable_name, Value
'character_set_client', 'utf8'
'character_set_connection', 'utf8'
'character_set_database', 'utf8'
'character_set_filesystem', 'binary'
'character_set_results', 'utf8'
'character_set_server', 'latin1'
'character_set_system', 'utf8'
'character_sets_dir', '/rdsdbbin/oscar-5.6.10a.14.15/share/charsets/'

Я немного растерялся и собираюсь переключиться на Python/Panda (который дал мне правильные символы, но мне нужно немного научиться тому, что я хочу делать дальше). Есть идеи, что делать сейчас?

Обновление 1:

SHOW CREATE TABLE users;
CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `first_name` varchar(255) NOT NULL,
  `last_name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `birthday` date DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `city` varchar(255) DEFAULT NULL,
  `state` varchar(255) DEFAULT NULL,
  `country` varchar(255) DEFAULT NULL,
  `beer_points` int(11) DEFAULT NULL,
  `access_token` text,
  `created_at` datetime NOT NULL,
  `updated_at` datetime NOT NULL,
  `profile_picture_file_name` varchar(255) DEFAULT NULL,
  `profile_picture_content_type` varchar(255) DEFAULT NULL,
  `profile_picture_file_size` int(11) DEFAULT NULL,
  `profile_picture_updated_at` datetime DEFAULT NULL,
  `role` varchar(255) DEFAULT NULL,
  `password_digest` varchar(255) DEFAULT NULL,
  `gender` varchar(255) DEFAULT NULL,
  `share_code` varchar(255) DEFAULT NULL,
  `privacy_enabled` tinyint(1) DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `index_users_on_email` (`email`),
  KEY `index_users_on_role` (`role`)
) ENGINE=InnoDB AUTO_INCREMENT=46 DEFAULT CHARSET=latin1

person brunoban    schedule 27.11.2015    source источник
comment
Я не могу воссоздать вашу проблему после копирования и вставки Джулии и вставки имени в базу данных MySQL. После удаленного подключения к R с использованием RMySQL для импорта фрейма данных Джулия импортировала просто отлично. Юлия (с акцентом) так выглядит в MySQL? Также проверьте набор символов таблицы вашей базы данных: SHOW CREATE TABLE users.   -  person Parfait    schedule 27.11.2015
comment
@Parfait Он отображается как Юлия в MySQL (Workbench и Sequel Pro). Я добавил информацию, которую вы просили. Спасибо!   -  person brunoban    schedule 28.11.2015
comment
Это может быть ваша системная локаль UTF-8, которая, как я полагаю, является португальской и пытается читать на латыни1. Изучите управление своим sys.locale() и/или изменить его .   -  person Parfait    schedule 29.11.2015
comment
@Parfait Раньше он был на английском языке в США, и изменение его на португальский было одной из вещей, которые я сделал, чтобы попытаться заставить его работать. В настоящее время я делаю это на Python, который, я думаю, работает нормально, но я действительно предпочел бы R =( Большое спасибо за помощь Parfait   -  person brunoban    schedule 30.11.2015


Ответы (1)


Этот код может быть полезен для вашей проблемы:

 con <- dbConnect(MySQL(),
               user = 'user',
               password = 'password',
               host = 'url',
               dbname='dbName')
 m <- dbGetQuery(con, "SET NAMES 'latin1'")
 sqlcmd <- paste("SELECT * FROM dbName.`users`");
 result <- dbGetQuery(con, sqlcmd)
 dbDisconnect(con)
person mrina713    schedule 24.04.2017