Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Java Server Pages - sortowanie przy wstawianiu do MySql?

Znaki zapytania pochodzą z tego:

  • Klient ma poprawny znak (dobry) i
  • SET NAMES zgadza się z kodowaniem klienta (dobrze), ale
  • CHARACTER SET kolumny docelowej nie zawiera zamierzonego znaku (zły).

Przykłady:

  • latin1 obsługuje tylko znaki zachodnioeuropejskie; próba umieszczenia znaku wschodnioeuropejskiego lub innego znaku azjatyckiego nie pasuje.
  • latin2 i cp1250 może obsługiwać język czeski, więc konwersje między nimi są w większości OK, ale nie między żadnym z nich a latin1
  • utf8mb4 jest nadzbiorem utf8 .Wstawienie znaku utf8 do utf8mb4 jest w porządku, ale odwrotność spowoduje powstanie znaku '?' w niektórych przypadkach.

Znaki, które zostały przekonwertowane na „?” nie można odzyskać ze stołu.

Jak naprawić przyszłe INSERTs ?

  • Korzystanie z utf8mb4 na kolumnach tabeli prawdopodobnie działa we wszystkich przypadkach.
  • W przeciwnym razie wybierz CHARACTER SET dla kolumn tabeli, które rozsądnie pasują do danych klienta.

Powód, dla którego tylko niektóre znaki są ? (w š?ž?? ) jest ponieważ šž istnieją w latin1, ale inne nie.

Konkluzja:Zmień CHARACTER SET w definicji tabeli.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. problem ze składnią sql i/lub problem z kodem? Indeks znajdował się poza granicami tablicy.

  2. MYSQL pasuje do zapytania dwóch tabel

  3. Nie można wstawić chińskiego znaku do MySQL

  4. PHP MySQL INSERT nie powiedzie się z powodu unikalnego ograniczenia

  5. Jakie efekty daje użycie binarnego zestawienia?