phpMyAdmin
 sql >> Database >  >> Database Tools >> phpMyAdmin

Memorizzazione dei dati MySQL in caratteri curdi?

Che cosa è successo:

  • avevi dati con codifica utf8 (buono)
  • SET NAMES latin1 era 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 arabi (curdi/farsi/ecc), quindi i punti interrogativi li hanno sostituiti.

La cura (per INSERTs futuri ):

  • Dati con codifica utf8 (buono)
  • mysqli_set_charset('utf8') (o qualunque cosa il tuo cliente abbia bisogno per stabilire il CHARACTER SET )
  • 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.

Per ricontrollare che i dati siano archiviati correttamente, faiSELECT col, HEX(col)... .
ه‌رچوون dovrebbe tornare D987E2808CD8B1DA86D988D988D986
I caratteri arabi in utf8 hanno esadecimale D8xx o D9xx.

(utf8mb4 funziona altrettanto bene come utf8; entrambi funzionano per l'arabo.)

Cattive notizie:i dati inseriti e trasformati in '???' non può essere recuperato.