Dårlige nyheder. Men først, dobbelttjek:
SELECT col, HEX(col)...
for at se, hvad der står i tabellen. Hvis hex viser 3F , så er dataene væk. Korrekt gemt, dal karakter skal være hex D8AF; hah er hex D8AD .
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 farsi-tegn, så spørgsmålstegn erstattede dem.
Kuren (for fremtidige `INDSÆTNINGER):
- Omkod din applikation ved hjælp af mysqli_*-grænsefladen i stedet for den forældede mysql_*-grænseflade.
- utf8-kodede data (godt)
- mysqli_set_charset('utf8')
- 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.
Hvis du ønsker at disse skal behandles ens:'بِسْمِ' ='بسم', så brug utf8_unicode_ci (i stedet for utf8_general_ci) til COLLATION .