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

Java сървърни страници - подравняване при вмъкване в MySql?

Въпросителните знаци идват от това:

  • Клиентът има валиден знак (добър) и
  • SET NAMES съгласява се с кодирането, което клиентът има (добро), но
  • CHARACTER SET на целевата колона не включва предвидения знак (лош).

Примери:

  • latin1 обработва само западноевропейски знаци; опитвайки се да поставите източноевропейски символ или азиатски символ в него няма да пасне.
  • latin2 и cp1250 може да се справи с чешки, така че преобразуванията между тях са предимно ОК, но не и между нито един от тях и latin1
  • utf8mb4 е надмножество на utf8 .Поставянето на символ utf8 в utf8mb4 е добре, но обратното ще доведе до '?' в някои случаи.

Знаците, които са били преобразувани в "?" не може да бъде възстановен от таблицата.

Как да коригирам бъдещи INSERTs ?

  • Използване на utf8mb4 в колоните на таблицата вероятно работи във всички случаи.
  • В противен случай изберете някакъв CHARACTER SET за колоната(ите) на таблицата, която разумно съответства на клиентските данни.

Причината само някои от знаците са ?š?ž?? ) е защото šž съществуват в latin1, но останалите не.

Долен ред:Променете CHARACTER SET в дефиницията на таблицата.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:Код на грешка:1118 Размерът на ред е твърде голям (> 8126). Промяна на някои колони на TEXT или BLOB

  2. Създайте бази данни с liquibase на празен екземпляр на mysql

  3. Импортирайте CSV в MySQL

  4. Предупреждение:mysql_query():предоставеният аргумент не е валиден MySQL-Link - Защо?

  5. Поправете „ГРЕШКА 1250 (42000):Таблица „...“ от един от SELECT не може да се използва в глобалната клауза ORDER“, когато използвате UNION в MySQL