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
ochcp1250
kan hantera tjeckiska, så konverteringar mellan dem är oftast OK, men inte mellan någon av dem ochlatin1
utf8mb4
ä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
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.