2016-12-03 3 views
0

У меня есть таблица, называемая сегментами, хранящаяся в базе данных MySQL. Таблица заключена в кодировку UTF-8 (charset utf8, collation utf8_general_ci), а в столбце «label» содержатся строки с акцентами, такие как «Fidèles», «Arrêtés» и т. Д.Строка с акцентами в таблице MySQL, возвращаемая как NA в R (RODBC)

Я запрашиваю эту таблицу с использованием R и RODBC пакет с простым:

data = sqlQuery(channel = myodbcconnection, query = "SELECT label FROM segments") 

Это приведет все строки, содержащих акценты заменяются значениями NA. Это не только замена акцентов на заполнение символов. Вся строка становится NA.

  • Запуск запроса из MySQL Workbench возвращает правильные строки, так что таблица отлично
  • R файлы UTF-8 кодируются, получены с UTF-8 кодировкой и т.д.
  • Соединение ODBC использует MySQL ODBC Driver UNICODE

что еще weirded, что если я запускаю UPDATE в базе данных из R, с чем-то вроде:

sqlQuery(channel = myodbcconnection, query = "UPDATE segments SET label = 'Testé et approuvé' WHERE id = 70") 

База данных обновляется правильно. Но если я его выберу, он вернет значение NA.

Это сводит меня с ума. ;-) Любая помощь будет принята с благодарностью.

+0

Я попробовал все комбинации 'as.is' и' stringAsFactors' (на всякий случай), но безрезультатно. –

+0

Я также должен добавить, что когда я создаю свое ODBC-соединение с 'odbcConnect', я указываю' DBMSencoding = "UTF-8" ' –

ответ

1

После сильной боли я нашел частичный ответ на свой вопрос.

Проблема была, как и ожидалось, с подключением ODBC и способом кодирования сообщений utf8. В строке подключения ODBC вы должны указать CharSet = utf8. Например:

Driver = {MySQL ODBC 3.51 Driver}; Server = localhost; Database = myDataBase; User = myUsername; Password = myPassword; Option = 3; CharSet = utf8;

Обратите внимание, что:

  • Это не достаточно, чтобы выбрать ODBC Unicode (utf8-совместимый) драйвер.
  • Указание «DBMSencoding» как utf8 в функции odbcConnect также было недостаточным.
  • Это исправляло проблему на моем локальном хосте, но не в моей производственной среде (Ubuntu/AWS) по неизвестной причине.

 Смежные вопросы

  • Нет связанных вопросов^_^