Otazníky pocházejí z tohoto:
- Klient má platný znak (dobrý) a
- Položka
SET NAMESsouhlasí s kódováním, které má klient (dobré), ale CHARACTER SETcílového sloupce nezahrnuje zamýšlený znak (špatný).
Příklady:
latin1zvládá pouze západoevropské znaky; pokusit se vložit východoevropský znak nebo jakýkoli asijský znak se do init nehodí.latin2acp1250umí češtinu, takže převody mezi nimi jsou většinou v pořádku, ale ne mezi žádným z nich alatin1utf8mb4je 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í
utf8mb4ve sloupcích tabulky pravděpodobně funguje ve všech případech. - V opačném případě vyberte nějakou
CHARACTER SETpro 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.