sql >> Databasteknik >  >> RDS >> PostgreSQL

UTF-8 / Unicode-textkodning med RPostgreSQL

Som Craig Ringer sa, ställa in client_encoding till windows-1252 är förmodligen inte det bästa man kan göra. Faktum är att om data du hämtar innehåller en enda exotisk karaktär, har du problem:

Å andra sidan kan det vara omöjligt att få din R-miljö att använda Unicode (jag har samma problem som du med Sys.setlocale ... Samma i denna fråga också.).

En lösning är att manuellt deklarera UTF-8-kodning på alla dina data, med en funktion som den här:

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
}

Och du måste använda den här funktionen i alla dina frågor:

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

EDIT: En annan möjlighet är att använda RPostgres istället för RPostgreSQL. Jag testade det (med samma konfiguration som i din fråga), och såvitt jag kan se är alla deklarerade kodningar automatiskt inställda på UTF-8.



  1. CHR() Funktion i Oracle

  2. PHP MYSQL - Infoga i utan att använda kolumnnamn men med autoinkrementfält

  3. Hur man lägger till kolumn för automatisk ökning i befintlig tabell i MySQL

  4. Violed - överordnad nyckel hittades inte 02291. 00000 - integritetsbegränsning