Seperti yang dikatakan Craig Ringer, menyetel client_encoding
ke windows-1252 mungkin bukan hal terbaik untuk dilakukan. Memang, jika data yang Anda ambil berisi satu karakter eksotis, Anda berada dalam masalah:
Di sisi lain, membuat lingkungan R Anda menggunakan Unicode tidak mungkin (saya memiliki masalah yang sama seperti Anda dengan Sys.setlocale
... Sama di pertanyaan ini
juga.).
Solusinya adalah mendeklarasikan penyandian UTF-8 secara manual pada semua data Anda, menggunakan fungsi seperti ini:
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
}
Dan Anda harus menggunakan fungsi ini di semua kueri Anda:
set_utf8(dbGetQuery(con, "SELECT myvar FROM mytable"))
EDIT: Kemungkinan lain adalah menggunakan RPostgres bukannya RPostgreSQL. Saya mengujinya (dengan konfigurasi yang sama seperti pada pertanyaan Anda), dan sejauh yang saya bisa lihat, semua penyandian yang dideklarasikan secara otomatis disetel ke UTF-8.