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

lỗi mã hóa postgres trong ứng dụng sidekiq

Chỉ vì chuỗi tuyên bố là UTF-8 không có nghĩa là nó là UTF-8. \ xe9 é trong ISO-8859-1 (AKA Latin-1) nhưng nó không hợp lệ trong UTF-8; tương tự, \ xf1 ñ trong ISO-8859-1 nhưng không hợp lệ trong UTF-8. Điều đó cho thấy rằng chuỗi thực sự được mã hóa theo ISO-8859-1 chứ không phải UTF-8. Bạn có thể khắc phục sự cố này bằng sự kết hợp của force_encoding để khắc phục sự nhầm lẫn của Ruby về mã hóa hiện tại và mã hóa để mã hóa lại nó thành UTF-8:

> "Tweets en Ingl\xE9s y en Espa\xF1ol".force_encoding('iso-8859-1').encode('utf-8')
=> "Tweets en Inglés y en Español" 

Vì vậy, trước khi gửi chuỗi đó đến cơ sở dữ liệu, bạn muốn:

name = name.force_encoding('iso-8859-1').encode('utf-8')

Thật không may, không có cách nào để phát hiện mã hóa thực của một chuỗi một cách đáng tin cậy. Các mã hóa khác nhau chồng chéo lên nhau và không có cách nào để biết được è ( \ xe8 trong ISO-8859-1) hoặc č ( \ xe8 trong ISO-8859-2) là ký tự phù hợp mà không cần kiểm tra sự tỉnh táo thủ công.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kết nối JDBC được tạo trong ineclipse không hoạt động như bình thường

  2. Cách chuẩn bị các câu lệnh và tham số liên kết trong Postgresql cho C ++

  3. Cách nhanh nhất để xây dựng lại số liệu thống kê PostgreSQL từ con số 0 / đầu với ANALYZE là gì?

  4. Biên dịch phần mở rộng mongo_fdw có thể ghi trên định dạng nhị phân của cài đặt PostgreSQL.

  5. Lỗi NodeJS Postgres getaddrinfo ENOTFOUND