Maison >base de données >tutoriel mysql >Pourquoi mes caractères persans s'affichent-ils incorrectement sur mon nouveau site Web Codeigniter, malgré l'utilisation du codage UTF-8 ?
Un développeur a rencontré un problème particulier lors de la réécriture d'un ancien site Web en persan, qui utilise des caractères perso/arabes. Le problème impliquait une différence dans le codage des caractères lors du stockage et de la récupération des données de la base de données.
Le script précédent utilisait un moteur de base de données appelé TUBADBENGINE pour gérer les données stockées avec le caractère codant "utf8_persian_ci". Le nouveau script, codé avec Codeigniter, avait également "utf8" et "utf8_persian_ci" comme jeu de caractères et paramètres de classement.
Cependant, lors de la saisie de caractères persans dans la base de données avec l'ancien script, ils étaient affichés différemment dans le nouveau script. L'ancien script affichait correctement les caractères comme prévu, mais le nouveau présentait une représentation étrange.
En creusant plus profondément, il a été découvert que les données stockées dans la base de données étaient dans ce qui semblait être un format erroné. L'insertion des caractères persans "aaaaaa" entraînait le stockage de "عمراÙ".
Lors de la récupération de ces données dans le nouveau script, elles étaient affichées sous la forme "عمراÙ". Cependant, l'ancien script l'affichait toujours correctement sous la forme "aaaaaa".
La racine du problème a été découverte après une analyse plus approfondie : la connexion à la base de données utilisée dans l'ancien script était par erreur configuré pour utiliser le codage de caractères latin1, malgré la configuration de la base de données et des tables avec utf8_persian_ci.
Cela a abouti au résultat suivant processus :
Pour résoudre ce problème, les données de la base de données ont dû être converties avec le codage de caractères correct. La requête suivante a été utilisée pour cette conversion :
SELECT CONVERT(BINARY CONVERT(field_name USING latin1) USING utf8) FROM table_name
Après la conversion des données, le nouveau script a pu afficher correctement les caractères persans.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!