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 latin1was 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 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.
Als u wilt dat deze gelijk worden behandeld:'بِسْمِ' ='بسم', gebruik dan utf8_unicode_ci (in plaats van utf8_general_ci) voor de COLLATION .