Maison > base de données > tutoriel mysql > Pourquoi mes caractères persans s'affichent-ils différemment entre les anciens et les nouveaux scripts de sites Web ?

Pourquoi mes caractères persans s'affichent-ils différemment entre les anciens et les nouveaux scripts de sites Web ?

Susan Sarandon
Libérer: 2024-12-26 11:46:10
original
299 Les gens l'ont consulté

Why Do My Persian Characters Display Differently Between Old and New Website Scripts?

Étrange écart de codage des caractères dans le stockage et la récupération des données

Dans le but de réécrire un ancien site Web utilisant des caractères persans, vous avez été confronté à un écart étrange entre la façon dont les données sont stockées et récupérées. L'ancien script affiche correctement les caractères persans, tandis que le nouveau les présente avec le même encodage que la base de données, qui apparaît déformé.

Pour comprendre ce problème, il est important de noter :

  • L'ancien script s'appuie sur TUBADBENGINE, qui utilise un mécanisme distinct pour le codage des caractères.
  • Le nouveau script utilise CodeIgniter, qui gère codage des caractères différemment.
  • La base de données est configurée avec un jeu de caractères UTF-8 et le classement utf8_persian_ci.

Lorsque vous saisissez des caractères persans à l'aide de l'ancien script, ils apparaissent comme des séquences étranges comme عمران dans la base de données. Cependant, l'ancien script les récupère et les affiche correctement. Cela suggère que TUBADBENGINE utilise un schéma de codage distinct, éventuellement basé sur ISO-8859-1, qui n'est pas reconnu par le nouveau script.

À l'inverse, si vous insérez directement des caractères persans dans la base de données, ils sont stockés comme prévu et récupéré correctement par le nouveau script. Cependant, l'ancien script les affiche désormais sous forme de points d'interrogation (????). En effet, le mécanisme de décodage des caractères de l'ancien script attend un encodage différent de celui utilisé par la base de données pour les insertions directes.

La solution réside dans la conversion des données existantes dans la base de données de l'encodage utilisé par TUBADBENGINE vers l'UTF. -8 encodage attendu par CodeIgniter. Pour ce faire :

  1. Ajustez la connexion à la base de données pour vous assurer qu'elle utilise le codage UTF-8.
  2. Convertissez les données dans les colonnes concernées à l'aide de la fonction CONVERTIR. Par exemple :
UPDATE tnewsgroups SET fName = CONVERT(INARY CONVERT(fName USING latin1) USING utf8);
Copier après la connexion

Une fois les données converties, les nouveaux et les anciens scripts doivent 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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal