sql >> Databáze >  >> RDS >> PostgreSQL

Kódování textu UTF-8 / Unicode s RPostgreSQL

Jak řekl Craig Ringer, nastavení client_encoding na windows-1252 asi není nejlepší věc. Pokud data, která načítáte, obsahují jediný exotický znak, máte potíže:

Na druhou stranu může být nemožné, aby vaše prostředí R používalo Unicode (mám stejný problém jako vy s Sys.setlocale ... Totéž v tato otázka taky.).

Řešením je ručně deklarovat kódování UTF-8 u všech vašich dat pomocí funkce, jako je tato:

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
}

A tuto funkci musíte použít ve všech svých dotazech:

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

UPRAVIT: Další možností je použít RPostgres místo RPostgreSQL. Testoval jsem to (se stejnou konfigurací jako ve vaší otázce) a pokud vidím, všechna deklarovaná kódování jsou automaticky nastavena na UTF-8.



  1. Jak mohu vyřešit chybu integrity pro pole, které neexistuje?

  2. Rails Migrations:pokusili se změnit typ sloupce z řetězce na celé číslo

  3. Jak vytvořit omezení Not Null ve sloupci v tabulce SQL Server - SQL Server / Výukový program T-SQL, část 51

  4. Místní jazyk Heroku nefunguje