PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Encodage de texte UTF-8 / Unicode avec RPostgreSQL

Comme l'a dit Craig Ringer, définir client_encoding à Windows-1252 n'est probablement pas la meilleure chose à faire. En effet, si les données que vous récupérez contiennent un seul caractère exotique, vous avez des problèmes :

D'autre part, faire en sorte que votre environnement R utilise Unicode pourrait être impossible (j'ai le même problème que vous avec Sys.setlocale ... Idem dans cette question aussi.).

Une solution consiste à déclarer manuellement l'encodage UTF-8 sur toutes vos données, en utilisant une fonction comme celle-ci :

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
}

Et vous devez utiliser cette fonction dans toutes vos requêtes :

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

MODIF : Une autre possibilité est d'utiliser RPostgres au lieu de RPostgreSQL. Je l'ai testé (avec la même configuration que dans votre question), et pour autant que je sache, tous les encodages déclarés sont automatiquement définis sur UTF-8.