Cattive notizie. Ma prima, ricontrolla:
SELECT col, HEX(col)...
per vedere cosa c'è nella tabella. Se l'esagono mostra 3F , quindi i dati sono spariti. Memorizzato correttamente, il dal il carattere dovrebbe essere D8AF esadecimale; hah è D8AD esadecimale .
Che cosa è successo:
- avevi dati con codifica utf8 (buono)
SET NAMES latin1era in vigore (predefinito, ma errato)- la colonna è stata dichiarata
CHARACTER SET latin1(predefinito, ma sbagliato)
Come hai INSERTed i dati sono stati convertiti in latin1, che non ha valori per i caratteri farsi, quindi i punti interrogativi li hanno sostituiti.
La cura (per futuri `INSERT):
- Ricodifica la tua applicazione utilizzando l'interfaccia mysqli_* invece dell'interfaccia mysql_* deprecata.
- Dati con codifica utf8 (buono)
- mysqli_set_charset('utf8')
- controlla che le colonne e/o le tabelle predefinite siano
CHARACTER SET utf8 - Se stai visualizzando su una pagina web,
<meta...utf8>dovrebbe essere vicino alla cima.
La discussione sopra riguarda CHARACTER SET , la codifica dei caratteri. Ora per un consiglio su COLLATION , utilizzato per confrontare e ordinare.
Se vuoi che questi siano trattati allo stesso modo:'بِسْمِ' ='بسم', usa utf8_unicode_ci (invece di utf8_general_ci) per COLLATION .