PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

UTF-8 / Unicode кодиране на текст с RPostgreSQL

Както каза Крейг Рингър, настройка на client_encoding към windows-1252 вероятно не е най-доброто нещо, което трябва да направите. Наистина, ако данните, които извличате, съдържат един-единствен екзотичен знак, имате проблеми:

От друга страна, да накарате вашата R среда да използва Unicode може да е невъзможно (имам същия проблем като вас с Sys.setlocale ... Същото в този въпрос също.).

Заобиколно решение е ръчно да декларирате UTF-8 кодиране на всички ваши данни, като използвате функция като тази:

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
}

И трябва да използвате тази функция във всички ваши заявки:

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

РЕДАКТИРАНЕ: Друга възможност е да използвате RPostgres вместо RPostgreSQL. Тествах го (със същата конфигурация като във вашия въпрос) и доколкото мога да видя, всички декларирани кодировки автоматично се задават на 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. Динамично наблюдение на екземпляри на PostgreSQL с помощта на pg_top

  2. ГРЕШКА:функциите в индексния израз трябва да бъдат маркирани като НЕИЗМЕНИМИ в Postgres

  3. Как да конвертирате клеймо за време в цяло число (Unix епоха) в Postgres

  4. съхранява низове с произволна дължина в Postgresql

  5. Jboss AS7 набор от връзки няма да се свърже отново