Проблема кодирования latin-1 / UTF-8 с библиотекой (odbc) - PullRequest
0 голосов
/ 03 июня 2019

Я использую R и library(odbc) для запроса данных из базы данных SQL Server:

library(odbc)
st_zh <- dbConnect(odbc(),
               driver   ='SQL Server'               ,
               server   = Sys.getenv("COMPUTERNAME"),
               database ='st_zh'                    ,
               encoding ='iso-8859-1'
#              encoding ='UTF-8'
);

Я выполняю запрос, содержащий не-ASCII символы:

res <- dbGetQuery(st_zh, "select nm from tab where nm = 'Zürich'");

Запрос возвращает одну запись, которая указывает, что ü было передано на SQL Server, как и предполагалось.

Однако, если я напечатаю res$nm, я получу следующее:

> res$nm
[1] "Z<fc>rich"

Кажется, <fc> указывает, что строка содержит ü в латинице-1. Однако R, кажется, думает, что это UTF-8:

> Encoding(res$nm)
[1] "UTF-8"

Если я явно изменю кодировку:

> Encoding(res$nm) <- 'latin-1'

Я получаю ü при печати res$nm.

Если я подключусь (dbConnect) к encoding='UTF-8', у меня возникнут те же проблемы.

Это происходит в Windows / rgui.exe.

Могу ли я изменить что-то, что R получает и правильно интерпретирует кодировку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...