Както каза Крейг Рингър, настройка на client_encoding
към windows-1252 вероятно не е най-доброто нещо, което трябва да направите. Наистина, ако данните, които извличате, съдържат един-единствен екзотичен знак, имате проблеми:
От друга страна, да накарате вашата R среда да използва Unicode може да е невъзможно (имам същия проблем като вас с Sys.setlocale
... Същото в този въпрос
също.).
Заобиколно решение е ръчно да декларирате UTF-8 кодиране на всички ваши данни, като използвате функция като тази:
set_utf8 <- function(x) {
# Declare UTF-8 encoding on all character columns:
chr <- sapply(x, is.character)
x[, chr] <- lapply(x[, chr, drop = FALSE], `Encoding<-`, "UTF-8")
# Same on column names:
Encoding(names(x)) <- "UTF-8"
x
}
И трябва да използвате тази функция във всички ваши заявки:
set_utf8(dbGetQuery(con, "SELECT myvar FROM mytable"))
РЕДАКТИРАНЕ: Друга възможност е да използвате RPostgres вместо RPostgreSQL. Тествах го (със същата конфигурация като във вашия въпрос) и доколкото мога да видя, всички декларирани кодировки автоматично се задават на UTF-8.