Какво се случи:
- имахте данни, кодирани в utf8 (добри)
SET NAMES latin1беше в сила (по подразбиране, но погрешно)- колоната е декларирана
CHARACTER SET latin1(по подразбиране, но погрешно)
Както сте INSERTed данните бяха преобразувани в latin1, което няма стойности за арабски (кюрдски/фарси/и т.н.) знаци, така че въпросителни знаци ги замениха.
Лечението (за бъдещи INSERTs ):
- utf8-кодирани данни (добри)
mysqli_set_charset('utf8')(или каквото е необходимо на вашия клиент за установяване наCHARACTER SET)- проверете дали колоната(ите) и/или таблицата по подразбиране са
CHARACTER SET utf8 - Ако показвате на уеб страница,
<meta...utf8>трябва да е близо до върха.
Дискусията по-горе е за CHARACTER SET , кодиране на знаци. Сега за съвет относно COLLATION , който се използва за сравняване и сортиране.
За да проверите отново дали данните се съхраняват правилно, направетеSELECT col, HEX(col)... .هرچوون трябва да се върне D987E2808CD8B1DA86D988D988D986
Арабските знаци в utf8 имат шестнадесетичен от D8xx или D9xx.
(utf8mb4 работи също толкова добре, колкото utf8; или работи за арабски.)
Лоши новини:Данните, които бяха вмъкнати и превърнати в „???“ не може да бъде възстановен.