Was ist passiert:
- Du hattest utf8-codierte Daten (gut)
SET NAMES latin1war in Kraft (Standard, aber falsch)- die Spalte wurde als
CHARACTER SET latin1deklariert (Standard, aber falsch)
Wie Sie INSERTed Die Daten wurden in latin1 konvertiert, das keine Werte für arabische (kurdische/farsi/usw.) Zeichen hat, also wurden sie durch Fragezeichen ersetzt.
Das Heilmittel (für zukünftige INSERTs ):
- utf8-codierte Daten (gut)
mysqli_set_charset('utf8')(oder was auch immer Ihr Client zum Erstellen desCHARACTER SETbenötigt )- Überprüfen Sie, ob die Spalten und/oder Tabellen standardmäßig
CHARACTER SET utf8sind - Wenn Sie auf einer Webseite anzeigen,
<meta...utf8>sollte ganz oben stehen.
Die obige Diskussion dreht sich um CHARACTER SET , die Kodierung von Zeichen. Nun zu einem Tipp zu COLLATION , die zum Vergleichen und Sortieren verwendet wird.
Um zu überprüfen, ob die Daten korrekt gespeichert sind, führen Sie SELECT col, HEX(col)... aus .هرچوون sollte zurückkommen D987E2808CD8B1DA86D988D988D986
Arabische Zeichen in utf8 haben hexadezimal D8xx oder D9xx.
(utf8mb4 funktioniert genauso gut wie utf8; beides funktioniert für Arabisch.)
Schlechte Nachrichten:Die eingefügten und in „???“ umgewandelten Daten kann nicht wiederhergestellt werden.