Co se stalo:
- máte data kódovaná utf8 (dobře)
SET NAMES latin1byl v platnosti (výchozí, ale nesprávný)- sloupec byl deklarován jako
CHARACTER SET latin1(výchozí, ale chybné)
Jak jste INSERTed data byla převedena na latinku1, která nemá hodnoty pro arabské (kurdské/farsí/atd.) znaky, takže je nahradily otazníky.
Lék (pro budoucí INSERTs ):
- data kódovaná utf8 (dobrá)
mysqli_set_charset('utf8')(nebo cokoli, co váš klient potřebuje k vytvořeníCHARACTER SET)- zkontrolujte, že výchozí sloupce a/nebo tabulka jsou
CHARACTER SET utf8 - Pokud zobrazujete na webové stránce,
<meta...utf8>by měl být blízko vrcholu.
Výše uvedená diskuse se týká CHARACTER SET , kódování znaků. Nyní tip na COLLATION , který se používá pro porovnávání a řazení.
Chcete-li znovu zkontrolovat, zda jsou data správně uložena, proveďteSELECT col, HEX(col)... .هرچوون by se měl vrátit D987E2808CD8B1DA86D988D988D986
Arabské znaky v utf8 mají hex D8xx nebo D9xx.
(utf8mb4 funguje stejně dobře jako utf8; buď funguje pro arabštinu.)
Špatná zpráva:Data, která byla vložena a převedena na „???“ nelze obnovit.