जैसा कि क्रेग रिंगर ने कहा, client_encoding
सेट करना to windows-1252 शायद सबसे अच्छी बात नहीं है। वास्तव में, यदि आप जो डेटा प्राप्त कर रहे हैं उसमें एक ही विदेशी वर्ण है, तो आप मुश्किल में हैं:
दूसरी ओर, यूनिकोड का उपयोग करने के लिए आपके R वातावरण को प्राप्त करना असंभव हो सकता है (मुझे आपकी जैसी ही समस्या है 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 के बजाय। मैंने इसका परीक्षण किया (आपके प्रश्न के समान कॉन्फ़िगरेशन के साथ), और जहां तक मैं देख सकता हूं कि सभी घोषित एन्कोडिंग स्वचालित रूप से यूटीएफ -8 पर सेट हो जाती हैं।