sql >> Database >  >> RDS >> PostgreSQL

UTF-8 / Unicode-tekstcodering met RPostgreSQL

Zoals Craig Ringer zei, het instellen van client_encoding naar windows-1252 is waarschijnlijk niet het beste om te doen. Als de gegevens die u ophaalt een enkel exotisch teken bevatten, heeft u een probleem:

Aan de andere kant kan het onmogelijk zijn om uw R-omgeving Unicode te laten gebruiken (ik heb hetzelfde probleem als u met Sys.setlocale ... Hetzelfde in deze vraag ook.).

Een tijdelijke oplossing is om handmatig UTF-8-codering op al uw gegevens te declareren, met behulp van een functie zoals deze:

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
}

En je moet deze functie gebruiken in al je vragen:

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

BEWERKEN: Een andere mogelijkheid is om RPostgres te gebruiken in plaats van RPostgreSQL. Ik heb het getest (met dezelfde configuratie als in uw vraag), en voor zover ik kan zien zijn alle gedeclareerde coderingen automatisch ingesteld op UTF-8.



  1. mysql COUNT() aantal rijen te traag

  2. Caching in PHP?

  3. Hoe GROUP BY te gebruiken op een CLOB-kolom met Oracle?

  4. opgestelde verklaring met welsprekende ORM / laravel