Maison > développement back-end > tutoriel php > Pourquoi mon nouveau script CodeIgniter affiche-t-il des caractères persans corrompus alors que l'ancien script ne le fait pas ?

Pourquoi mon nouveau script CodeIgniter affiche-t-il des caractères persans corrompus alors que l'ancien script ne le fait pas ?

Susan Sarandon
Libérer: 2024-12-27 05:30:15
original
186 Les gens l'ont consulté

Why Does My New CodeIgniter Script Display Corrupted Persian Characters While the Old Script Doesn't?

Encodage de caractères étranges dans la base de données : décodage d'un ancien script, échec d'un nouveau script

Énoncé du problème :

Une migration de site Web d'un ancien script vers un nouveau script basé sur CodeIgniter rencontre des problèmes d'encodage des caractères. L'ancien script peut afficher les caractères persans stockés dans la base de données, tandis que le nouveau script affiche le texte corrompu.

Analyse :

Les tables et colonnes de la base de données sont configurées avec un assemblage de utf8_persian_ci. Le nouveau script utilise également UTF-8 comme jeu de caractères et assemblage. Le problème vient de la manière dont les caractères étaient initialement stockés dans la base de données lors de l'utilisation de l'ancien moteur TubaDBE.

Comportement de l'ancien script :

Lorsque des caractères persans étaient insérés dans le base de données utilisant TubaDBEngine, ils étaient stockés non pas en UTF-8 mais dans un encodage différent, ce qui entraînait l'affichage de caractères tels que "عمران" dans la base de données. Cependant, l'ancien script était capable de décoder et d'afficher ces caractères correctement.

Nouveau problème de script :

Le nouveau script, bien que configuré correctement pour UTF-8, ne peut pas décoder les caractères initialement stockés dans la base de données à l'aide de l'encodage de TubaDBEngine. En conséquence, le nouveau script affiche du texte corrompu lors de la récupération des données.

Solution :

  1. Convertissez les données stockées dans la base de données en UTF-8 à l'aide d'un requête telle que :
SELECT CONVERT(BINARY CONVERT(fName USING latin1) USING utf8) FROM tnewsgroups
Copier après la connexion
  1. Mettre à jour les données de la base de données à l'aide d'un UPDATE déclaration :
UPDATE tnewsgroups SET fName = CONVERT(BINARY CONVERT(fName USING latin1) USING utf8)
Copier après la connexion

Après la conversion des données, le nouveau script devrait être capable de récupérer et d'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