PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Kodowanie tekstu UTF-8 / Unicode za pomocą RPostgreSQL

Jak powiedział Craig Ringer, ustawienie client_encoding do windows-1252 prawdopodobnie nie jest najlepszą rzeczą do zrobienia. Rzeczywiście, jeśli pobierane dane zawierają jeden egzotyczny znak, masz kłopoty:

Z drugiej strony, nakłonienie środowiska R do używania Unicode może być niemożliwe (mam ten sam problem, co ty z Sys.setlocale ... To samo w to pytanie też.).

Rozwiązaniem jest ręczne zadeklarowanie kodowania UTF-8 dla wszystkich danych za pomocą funkcji takiej jak ta:

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
}

Musisz używać tej funkcji we wszystkich swoich zapytaniach:

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

EDYTUJ: Inną możliwością jest użycie RPostgres zamiast RPostgreSQL. Przetestowałem to (z taką samą konfiguracją jak w twoim pytaniu) i o ile widzę, wszystkie zadeklarowane kodowania są automatycznie ustawiane na UTF-8.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd podczas próby instalacji django-toolkit w python virtualenv

  2. Jak rzutować typ bajta do podwójnej precyzji

  3. System logowania za pomocą fizycznych użytkowników postgres, a nie logicznych

  4. PostgreSQL dynamicznie modyfikujący pola w NOWYM rekordzie w funkcji wyzwalacza

  5. Postgres json_agg zawiera nagłówek kolumny — Nieprawidłowy JSON?