Jak řekl Craig Ringer, nastavení client_encoding
na windows-1252 asi není nejlepší věc. Pokud data, která načítáte, obsahují jediný exotický znak, máte potíže:
Na druhou stranu může být nemožné, aby vaše prostředí R používalo Unicode (mám stejný problém jako vy s Sys.setlocale
... Totéž v tato otázka
taky.).
Řešením je ručně deklarovat kódování UTF-8 u všech vašich dat pomocí funkce, jako je tato:
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
}
A tuto funkci musíte použít ve všech svých dotazech:
set_utf8(dbGetQuery(con, "SELECT myvar FROM mytable"))
UPRAVIT: Další možností je použít RPostgres místo RPostgreSQL. Testoval jsem to (se stejnou konfigurací jako ve vaší otázce) a pokud vidím, všechna deklarovaná kódování jsou automaticky nastavena na UTF-8.