Wat is er gebeurd:
- u had utf8-gecodeerde gegevens (goed)
SET NAMES latin1was van kracht (standaard, maar verkeerd)- de kolom is verklaard
CHARACTER SET latin1(standaard, maar fout)
Zoals je INSERTed de gegevens zijn geconverteerd naar latin1, die geen waarden heeft voor Arabische (Koerdische/Farsi/etc) tekens, dus vraagtekens hebben ze vervangen.
De remedie (voor toekomstige INSERTs ):
- utf8-gecodeerde gegevens (goed)
mysqli_set_charset('utf8')(of wat uw klant ook nodig heeft voor het maken van deCHARACTER SET)- controleer of de standaardkolom(men) en/of tabel
CHARACTER SET utf8zijn - Als u op een webpagina weergeeft,
<meta...utf8>zou bovenaan moeten staan.
De bovenstaande discussie gaat over CHARACTER SET , de codering van tekens. Nu voor een tip over COLLATION , die wordt gebruikt voor het vergelijken en sorteren.
Om te controleren of de gegevens correct zijn opgeslagen, doet u SELECT col, HEX(col)... .هرچوون moet terugkomen D987E2808CD8B1DA86D988D988D986
Arabische tekens in utf8 hebben de hexadecimale waarde van D8xx of D9xx.
(utf8mb4 werkt net zo goed als utf8; beide werken voor Arabisch.)
Slecht nieuws:de gegevens die zijn ingevoerd en omgezet in '???' kan niet worden hersteld.