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ÄCKNINGinnehåller inte det avsedda tecknet (dåligt).
Exempel:
latin1hanterar 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.latin2ochcp1250kan hantera tjeckiska, så konverteringar mellan dem är oftast OK, men inte mellan någon av dem ochlatin1utf8mb4är en superuppsättning avutf8.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
utf8mb4på tabellkolumnen fungerar förmodligen i alla fall. - I annat fall väljer du någon
TECKNSETTfö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.