PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Mã hóa văn bản UTF-8 / Unicode với RPostgreSQL

Như Craig Ringer đã nói, thiết lập client_encoding sang windows-1252 có lẽ không phải là điều tốt nhất để làm. Thật vậy, nếu dữ liệu bạn đang truy xuất chứa một ký tự kỳ lạ, bạn đang gặp rắc rối:

Mặt khác, việc sử dụng môi trường R của bạn để sử dụng Unicode có thể là không thể (Tôi gặp vấn đề giống bạn với Sys.setlocale ... Tương tự trong câu hỏi này quá.).

Một cách giải quyết là khai báo mã hóa UTF-8 theo cách thủ công trên tất cả dữ liệu của bạn, sử dụng một hàm như sau:

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
}

Và bạn phải sử dụng chức năng này trong tất cả các truy vấn của mình:

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

CHỈNH SỬA: Một khả năng khác là sử dụng RPostgres không ổn định của RPostgreSQL. Tôi đã thử nghiệm nó (với cùng một cấu hình như trong câu hỏi của bạn) và theo như tôi có thể thấy tất cả các mã hóa đã khai báo đều được tự động đặt thành 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. Làm cách nào để hiển thị nếu một hãng hàng không khởi hành từ tất cả các sân bay trong DB của tôi ở Postgresql?

  2. Phạm vi đường ray được tạo trong tháng

  3. LISTEN / NOTIFY bằng cách sử dụng pg_notify (text, text) trong PostgreSQL

  4. Điều gì xảy ra với các bản sao khi chèn nhiều hàng?

  5. Giá trị mảng số nguyên PostgreSQL nối với số nguyên trong bảng khác với chuỗi mô tả