phpMyAdmin
 sql >> Base de données >  >> Database Tools >> phpMyAdmin

Stocker des données MySQL en police kurde ?

Que s'est-il passé :

  • vous aviez des données encodées en utf8 (bien)
  • SET NAMES latin1 était en vigueur (par défaut, mais erroné)
  • la colonne a été déclarée CHARACTER SET latin1 (par défaut, mais faux)

Comme vous l'avez INSERTed les données, elles ont été converties en latin1, qui n'a pas de valeurs pour les caractères arabes (kurde/farsi/etc), donc les points d'interrogation les ont remplacés.

Le remède (pour les futurs INSERTs ):

  • Données encodées en utf8 (bonnes)
  • mysqli_set_charset('utf8') (ou tout ce dont votre client a besoin pour établir le CHARACTER SET )
  • vérifier que la ou les colonnes et/ou la table par défaut sont CHARACTER SET utf8
  • Si vous affichez sur une page Web, <meta...utf8> devrait être près du sommet.

La discussion ci-dessus concerne CHARACTER SET , l'encodage des caractères. Maintenant, un conseil sur COLLATION , qui est utilisé pour comparer et trier.

Pour vérifier que les données sont stockées correctement, faites SELECT col, HEX(col)... .
ه‌رچوون devrait revenir D987E2808CD8B1DA86D988D988D986
Les caractères arabes en utf8 ont l'hexagone de D8xx ou D9xx.

(utf8mb4 fonctionne aussi bien que utf8; l'un ou l'autre fonctionne pour l'arabe.)

Mauvaise nouvelle :les données qui ont été insérées et transformées en '???' ne peut pas être récupéré.