Fragezeichen kommen daher:
- Der Client hat einen gültigen Charakter (gut) und
- Die
SET NAMES
stimmt mit der Kodierung überein, die der Client hat (gut), aber - Der
CHARACTER SET
der Zielspalte enthält nicht das beabsichtigte Zeichen (schlecht).
Beispiele:
latin1
verarbeitet nur westeuropäische Zeichen; Der Versuch, ein osteuropäisches Zeichen oder irgendein asiatisches Zeichen einzufügen, passt nicht.latin2
undcp1250
kann mit Tschechisch umgehen, daher sind Konvertierungen zwischen ihnen meistens in Ordnung, aber nicht zwischen beiden undlatin1
utf8mb4
ist eine Obermenge vonutf8
.Das Einfügen eines utf8-Zeichens in utf8mb4 ist in Ordnung, aber das Gegenteil führt zu einem '?' in manchen Fällen.
Die Zeichen, die in '?' kann nicht aus der Tabelle wiederhergestellt werden.
So beheben Sie zukünftige INSERTs
?
- Mit
utf8mb4
auf die Tabellenspalte(n) funktioniert wahrscheinlich in allen Fällen. - Andernfalls wählen Sie einen
CHARACTER SET
für die Tabellenspalte(n), die vernünftigerweise mit den Kundendaten übereinstimmt.
Der Grund dafür, dass nur einige der Zeichen ?
sind (in š?ž??
) ist weil šž
gibt es in latin1, aber die anderen nicht.
Fazit:Ändere den CHARACTER SET
in der Tabellendefinition.