sql >> Databasteknik >  >> RDS >> Mysql

Java Server Pages - sortering vid insättning i MySql?

Frågetecken kommer från detta:

  • Klienten har ett giltigt tecken (bra) och
  • SET NAMES överensstämmer med kodningen som klienten har (bra), men
  • Målkolumns TECKENSTÄCKNING innehåller inte det avsedda tecknet (dåligt).

Exempel:

  • latin1 hanterar endast västeuropeiska tecken; Att försöka sätta in en östeuropeisk karaktär eller någon asiatisk karaktär kommer inte att passa.
  • latin2 och cp1250 kan hantera tjeckiska, så konverteringar mellan dem är oftast OK, men inte mellan någon av dem och latin1
  • utf8mb4 är en superuppsättning av utf8 .Att sätta ett utf8-tecken i utf8mb4 är ok, men omvändningen kommer att resultera i ett '?' i vissa fall.

Karaktärerna som konverterades till "?" kan inte återställas från bordet.

Så här fixar du framtida INSERT ?

  • Använder utf8mb4 på tabellkolumnen fungerar förmodligen i alla fall.
  • I annat fall väljer du någon TECKNSETT för den eller de tabellkolumner som rimligen matchar klientdata.

Anledningen till att bara några av tecknen är ? (i š?ž?? ) beror på att šž finns på latin1 men de andra gör det inte.

Nedersta raden:Ändra TECKNSETT i tabelldefinitionen.



  1. Lagra bildfiler eller webbadresser i MySQL-databas? Vilket är bättre?

  2. Förhindra utnyttjande av bakåtknappen? PHP

  3. Hur UNHEX()-funktionen fungerar i MySQL

  4. Är INNODB aktiverat som standard i MySQL?