PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

kesalahan penyandian postgres di aplikasi sidekiq

Hanya karena string mengklaim sebagai UTF-8 tidak berarti bahwa itu adalah UTF-8. \xe9 adalah é di ISO-8859-1 (AKA Latin-1) tetapi tidak valid dalam UTF-8; sama, \xf1 adalah ñ di ISO-8859-1 tetapi tidak valid di UTF-8. Itu menunjukkan bahwa string sebenarnya dikodekan dalam ISO-8859-1 daripada UTF-8. Anda dapat memperbaikinya dengan kombinasi force_encoding untuk mengoreksi kebingungan Ruby tentang penyandian saat ini dan encode untuk menyandikan ulang sebagai 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" 

Jadi sebelum mengirim string itu ke database, Anda ingin:

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

Sayangnya, tidak ada cara untuk mendeteksi penyandian string yang sebenarnya dengan andal. Berbagai penyandian tumpang tindih dan tidak ada cara untuk mengetahui apakah è (\xe8 dalam ISO-8859-1) atau č (\xe8 dalam ISO-8859-2) adalah karakter yang tepat tanpa pemeriksaan kewarasan manual.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa sebenarnya yang dilakukan oleh/pernyataan data ini di SAS? Setara dengan PostgreSQL?

  2. Nama tabel dan properti yang tidak peka huruf besar-kecil di Entity Framework 7

  3. Tentang manfaat jalur yang diurutkan

  4. Gabungkan dua objek JSON di PostgreSQL

  5. Formulir Django ke basis data kueri (model)