Otazníky pocházejí z tohoto:
- Klient má platný znak (dobrý) a
- Položka
SET NAMES
souhlasí s kódováním, které má klient (dobré), ale CHARACTER SET
cílového sloupce nezahrnuje zamýšlený znak (špatný).
Příklady:
latin1
zvládá pouze západoevropské znaky; pokusit se vložit východoevropský znak nebo jakýkoli asijský znak se do init nehodí.latin2
acp1250
umí češtinu, takže převody mezi nimi jsou většinou v pořádku, ale ne mezi žádným z nich alatin1
utf8mb4
je nadmnožinouutf8
.Vložení znaku utf8 do utf8mb4 je v pořádku, ale obrácený způsob bude mít za následek '?' v některých případech.
Znaky, které byly převedeny na '?' nelze obnovit z tabulky.
Jak opravit budoucí INSERTs
?
- Pomocí
utf8mb4
ve sloupcích tabulky pravděpodobně funguje ve všech případech. - V opačném případě vyberte nějakou
CHARACTER SET
pro sloupce tabulky, které přiměřeně odpovídají datům klienta.
Důvod, proč jsou pouze některé znaky ?
(v š?ž??
), protože šž
existují v latin1, ale ostatní ne.
Sečteno a podtrženo:Změňte CHARACTER SET
v definici tabulky.