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

грешка при кодиране на postgres в приложението sidekiq

Само защото низът твърди, че е UTF-8, не означава, че е UTF-8. \xe9 е é в ISO-8859-1 (AKA Latin-1), но е невалиден в UTF-8; подобно, \xf1 е ñ в ISO-8859-1, но невалиден в UTF-8. Това предполага, че низът всъщност е кодиран в ISO-8859-1, а не в UTF-8. Можете да го поправите с комбинация от force_encoding за коригиране на объркването на Ruby относно текущото кодиране и encode за да го прекодирате като 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" 

Така че, преди да изпратите този низ към базата данни, искате да:

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

За съжаление, няма начин надеждно да се открие истинското кодиране на низ. Различните кодировки се припокриват и няма начин да се разбере дали è (\xe8 в ISO-8859-1) или č (\xe8 в ISO-8859-2) е правилният знак без ръчна проверка за разумност.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rails 4:Използването на функцията PostgreSQL по ред причинява грешка в заявката, поради това, че включената таблица не е свързана

  2. Как да върнете стойност от обещание

  3. Как да репликирате оператори INSERT/UPDATE/DELETE с помощта на JPA и Hibernate

  4. Postgresql:Заявка 10 пъти по-бавна в различен клиент

  5. как да изключите Heroku SQL регистрационни файлове от postgres