Schlechte Nachrichten. Aber überprüfen Sie zuerst:
SELECT col, HEX(col)...
um zu sehen, was in der Tabelle steht. Wenn das Hex 3F anzeigt , dann sind die Daten weg. Richtig gespeichert, das dal Zeichen sollte hexadezimal sein D8AF; hah ist hex D8AD .
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 Farsi-Zeichen hat, also wurden sie durch Fragezeichen ersetzt.
Das Heilmittel (für zukünftige `INSERTs):
- Codieren Sie Ihre Anwendung neu, indem Sie die mysqli_*-Schnittstelle anstelle der veralteten mysql_*-Schnittstelle verwenden.
- utf8-codierte Daten (gut)
- mysqli_set_charset('utf8')
- Überprüfen Sie, ob die Spalte(n) und/oder Tabellenstandardwerte
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.
Wenn Sie möchten, dass diese gleich behandelt werden:'بِسْمِ' ='بسم', dann verwenden Sie utf8_unicode_ci (statt utf8_general_ci) für die COLLATION .