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

UTF-8 / Unicode-tekstkodning med RPostgreSQL

Som Craig Ringer sagde, indstillede du client_encoding til windows-1252 er nok ikke den bedste ting at gøre. Faktisk, hvis de data, du henter, indeholder en enkelt eksotisk karakter, er du i problemer:

På den anden side kunne det være umuligt at få dit R-miljø til at bruge Unicode (jeg har det samme problem som dig med Sys.setlocale ... Samme i dette spørgsmål også.).

En løsning er manuelt at erklære UTF-8-kodning på alle dine data ved at bruge en funktion som denne:

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
}

Og du skal bruge denne funktion i alle dine forespørgsler:

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

EDIT: En anden mulighed er at bruge RPostgres i stedet for RPostgreSQL. Jeg testede det (med samme konfiguration som i dit spørgsmål), og så vidt jeg kan se er alle deklarerede kodninger automatisk sat til UTF-8.



  1. Hvordan bruger man GROUP BY til at sammenkæde strenge i MySQL?

  2. Hvad er forskellen mellem mysql og mysql2 perle

  3. Tilføj en nummereret listekolonne til en returneret MySQL-forespørgsel

  4. Hvordan fjerner man tidsdelen af ​​en datetime-værdi (SQL-server)?