PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

UTF-8 / Codifica del testo Unicode con RPostgreSQL

Come ha detto Craig Ringer, impostando client_encoding a Windows-1252 probabilmente non è la cosa migliore da fare. Infatti, se i dati che stai recuperando contengono un solo carattere esotico, sei nei guai:

D'altra parte, far sì che il tuo ambiente R utilizzi Unicode potrebbe essere impossibile (ho il tuo stesso problema con Sys.setlocale ... Lo stesso in questa domanda anche.).

Una soluzione alternativa è dichiarare manualmente la codifica UTF-8 su tutti i tuoi dati, utilizzando una funzione come questa:

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
}

E devi usare questa funzione in tutte le tue domande:

set_utf8(dbGetQuery(con, "SELECT myvar FROM mytable"))

MODIFICA: Un'altra possibilità è usare RPostgres invece di RPostgreSQL. L'ho testato (con la stessa configurazione della tua domanda) e per quanto posso vedere tutte le codifiche dichiarate sono automaticamente impostate su UTF-8.