Slecht nieuws. Maar controleer eerst:
SELECT col, HEX(col)...
om te zien wat er in de tabel staat. Als de hex 3F
. toont , dan zijn de gegevens weg. Correct opgeslagen, de dal
teken moet hexadecimaal zijn D8AF
; hah
is hex D8AD
.
Wat is er gebeurd:
- u had utf8-gecodeerde gegevens (goed)
SET NAMES latin1
was van kracht (standaard, maar verkeerd)- de kolom is verklaard
CHARACTER SET latin1
(standaard, maar fout)
Zoals je INSERTed
de gegevens, het is geconverteerd naar latin1, die geen waarden heeft voor Farsi-tekens, dus vraagtekens hebben ze vervangen.
De remedie (voor toekomstige `INSERT's):
- Hercodeer uw toepassing met de mysqli_*-interface in plaats van de verouderde mysql_*-interface.
- utf8-gecodeerde gegevens (goed)
- mysqli_set_charset('utf8')
- controleer of de standaardkolom(men) en/of tabel
CHARACTER SET utf8
zijn - 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.
Als u wilt dat deze gelijk worden behandeld:'بِسْمِ' ='بسم', gebruik dan utf8_unicode_ci (in plaats van utf8_general_ci) voor de COLLATION
.