Hvad skete der:
- du havde utf8-kodede data (godt)
SET NAMES latin1var i kraft (standard, men forkert)- kolonnen blev erklæret
CHARACTER SET latin1(standard, men forkert)
Som du INSERTed dataene blev de konverteret til latin1, som ikke har værdier for arabiske (kurdiske/farsi/osv) tegn, så spørgsmålstegn erstattede dem.
Kuren (til fremtidige INSERTs ):
- utf8-kodede data (godt)
mysqli_set_charset('utf8')(eller hvad din klient har brug for for at etablereCHARACTER SET)- tjek, at kolonnen(erne) og/eller tabellens standard er
CHARACTER SET utf8 - Hvis du viser på en webside,
<meta...utf8>skal være tæt på toppen.
Diskussionen ovenfor handler om CHARACTER SET , indkodning af tegn. Nu til et tip om COLLATION , som bruges til at sammenligne og sortere.
For at dobbelttjekke, at dataene er lagret korrekt, skal duSELECT col, HEX(col)... .هرچوون skulle komme tilbage D987E2808CD8B1DA86D988D988D986
Arabiske tegn i utf8 har hex på D8xx eller D9xx.
(utf8mb4 fungerer lige så godt som utf8; virker enten til arabisk.)
Dårlige nyheder:De data, der blev indsat og omdannet til '???' kan ikke gendannes.