Импорт символов UTF-8 из базы данных в R Studio - PullRequest
0 голосов
/ 05 октября 2018

Я запрашиваю данные из базы данных SQL Server в R Studio.Некоторые столбцы содержат буквы кириллицы, которые следует использовать в дальнейшем анализе.Однако они закодированы неправильно, поэтому я не могу их использовать.В связи с конфиденциальностью работы я создам воспроизводимый пример, который показывает проблему.

library(odbc)
library(pool)
library(DBI)
poolX <- dbPool(drv = odbc::odbc(),
               Driver = "ODBC Driver 17 for SQL Server",
               Database = "database",
               Server = "server",
               UID = "user",
               PWD = "123456")

Соединение работает хорошо и позволяет R Studio запрашивать данные из необходимой базы данных.База данных содержит таблицу с символами.

Столбец City содержит названия городов, написанные на русском языке.

Он отображается в SQL Server как:

City = Алматы, Астана

Однако, когда я запрашиваю этот столбец в ячейке RStudio, он записывается в этомform:

City = <c0><eb><ec><e0><f2><fb>,<c0><f1><f2><e0><ed><e0>

Также R показывает его в другой уникальной форме (Город) # [1] "\ xc0 \ xeb \ xec \ xe0 \ xf2 \ xfb"
# [2] "\ xc0\ xf1 \ xf2 \ xe0 \ xed \ xe0 "

Интересно, что если я импортирую данные из базы данных SQL Server в Excel и загружаю их в R Studio, это хорошо работает

Мне нужно прямоеподключение из базы данных к RStudio, поэтому я должен исправить эту проблему.Любая помощь приветствуется.В чем проблема?

1 Ответ

0 голосов
/ 05 октября 2018

Вы можете установить свой язык на русский перед импортом из MSSQL с помощью

Sys.setlocale(locale = "Russian")

Если вы не хотите устанавливать все на русский язык, вы можете просто установить язык с помощью

Sys.setlocale(category = "LC_CTYPE", locale = "Russian")

Пример:

> City = "Алматы, Астана"
> data.frame(City)
                                                                                                City
1 <U+0410><U+043B><U+043C><U+0430><U+0442><U+044B>, <U+0410><U+0441><U+0442><U+0430><U+043D><U+0430>
> Sys.setlocale(category = "LC_CTYPE", locale = "Russian")
[1] "Russian_Russia.1251"
> 
> data.frame(City)
            City
1 Алматы, Астана
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...