Fragezeichen kommen daher:
- Der Client hat einen gültigen Charakter (gut) und
- Die
SET NAMESstimmt mit der Kodierung überein, die der Client hat (gut), aber - Der
CHARACTER SETder Zielspalte enthält nicht das beabsichtigte Zeichen (schlecht).
Beispiele:
latin1verarbeitet nur westeuropäische Zeichen; Der Versuch, ein osteuropäisches Zeichen oder irgendein asiatisches Zeichen einzufügen, passt nicht.latin2undcp1250kann mit Tschechisch umgehen, daher sind Konvertierungen zwischen ihnen meistens in Ordnung, aber nicht zwischen beiden undlatin1utf8mb4ist 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
utf8mb4auf die Tabellenspalte(n) funktioniert wahrscheinlich in allen Fällen. - Andernfalls wählen Sie einen
CHARACTER SETfü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.