Maison  >  Article  >  développement back-end  >  Que faire si php lit des caractères chinois tronqués dans la base de données

Que faire si php lit des caractères chinois tronqués dans la base de données

DDD
DDDoriginal
2023-06-06 11:13:041470parcourir

Solution au code chinois tronqué lu par PHP depuis la base de données : 1. Utilisez la fonction "mysql_query" pour définir l'encodage de la connexion MYSQL et assurez-vous que l'encodage de la déclaration de page est cohérent avec l'encodage de la connexion défini ici 2. Utilisez le logiciel FTP ; de modifier directement le fichier en ligne ; 3. Ajoutez « AddDefaultCharset GB2312 » à la machine virtuelle du fichier de configuration pour remplacer la configuration globale, ou configurez-la dans le .htaccess du répertoire.

Que faire si php lit des caractères chinois tronqués dans la base de données

L'environnement d'exploitation de ce tutoriel : système Windows 10, PHP version 8.1.3, ordinateur Dell g3.

La raison des caractères chinois tronqués lorsque PHP lit la base de données :

De manière générale, il existe deux raisons pour l'apparition de caractères tronqués. La première est due à un paramètre d'encodage (jeu de caractères) incorrect, ce qui entraîne le navigateur. analyser avec le mauvais encodage, apparaissant ainsi. L'écran est plein de "livres célestes" en désordre, et la seconde est que le fichier est ouvert avec le mauvais encodage puis enregistré. Par exemple, un fichier texte a été initialement encodé en GB2312, mais. il a été ouvert en codage UTF-8 puis enregistré. Pour résoudre le problème de code tronqué ci-dessus, vous devez d'abord savoir quels aspects du développement impliquent l'encodage :

 1. Encodage du fichier : fait référence à l'encodage dans lequel le fichier d'échange (.html, .php, etc.) lui-même est enregistré. Le Bloc-notes et Dreamweaver reconnaîtront automatiquement l'encodage du fichier lors de l'ouverture de la page, il y aura donc moins de problèmes. Cependant, ZendStudio ne reconnaît pas automatiquement l'encodage. Il ouvrira uniquement le fichier dans un certain encodage en fonction de la configuration des préférences si vous ouvrez accidentellement le fichier avec le mauvais encodage pendant le travail, et le sauvegardera après avoir effectué la modification, tronqué. des personnages apparaîtront.

 2. Encodage de la déclaration de page : Dans le code HTML HEAD, vous pouvez utiliser "meta http-equiv="Content-Type" content="text/html; charset="XXX" /" (cette phrase doit être écrite en " TItre >>

  3. Encodage de connexion à la base de données : fait référence à l'encodage utilisé pour transmettre les données à la base de données lors de l'exécution d'opérations de base de données. Il convient de noter ici qu'il ne doit pas être confondu avec l'encodage de la base de données elle-même. le codage par défaut dans MySQL est le codage laTIn1, ce qui signifie que Mysql est que les données sont stockées dans le codage laTIn1 et que les données transmises à Mysql dans d'autres codages seront converties en codage latin1. Sachant où le codage est impliqué dans le développement WEB, vous connaîtrez également le codage. cause de caractères tronqués : les trois paramètres d'encodage ci-dessus sont incohérents, puisque la plupart des différents encodages sont compatibles ASCII, les symboles anglais n'apparaîtront pas et les caractères chinois n'auront pas de chance.

Voici quelques situations d'erreur courantes et leurs solutions :

 1. La base de données utilise le codage UTF8 et la page est codée. Le codage de la déclaration est GB2312, ce qui est la cause la plus courante de caractères tronqués. À l'heure actuelle, les données directement SÉLECTIONNÉES dans le script PHP sont tronquées. à utiliser :

mysql_query(”SET NAMES GBK“);
 或mysql_query(”SET NAMES GB2312“);

  pour définir l'encodage de connexion MYSQL avant d'interroger pour s'assurer que la page déclare l'encodage. Il est cohérent avec l'encodage de connexion défini ici (GBK est une extension de GB2312). vous pouvez utiliser :

mysql_query(”SET NAMES UTF8“);

 Notez qu'il s'agit d'UTF8 au lieu de l'UTF-8 couramment utilisé si la page déclare l'encodage et la base de données. Si l'encodage interne est cohérent, vous n'avez pas besoin de définir l'encodage de connexion

Remarque. : En fait, l'entrée et la sortie des données de MYSQL sont plus compliquées que celles mentionnées ci-dessus. Il existe 2 encodages par défaut définis dans le fichier de configuration MYSQL my.ini, qui sont dans [client-character-set et default-character-]. défini dans [mysqld] définit respectivement l'encodage utilisé par la connexion client et la base de données en interne. L'encodage que nous avons spécifié ci-dessus est en fait le paramètre de ligne de commande lorsque le client MYSQL se connecte au serveur Character_set_client, pour indiquer au serveur MYSQL quel est l'encodage du client. les données reçues sont, au lieu d'utiliser l'encodage par défaut.

  2. L'encodage de la déclaration de page est incohérent avec l'encodage du fichier lui-même, car si l'encodage est incohérent, la page sera parfois rendue. dans le navigateur, il y a des caractères tronqués. La plupart du temps, cela est dû à la correction de quelques bugs mineurs après la publication, à l'ouverture de la page avec un mauvais encodage, puis à son enregistrement. Ou vous utilisez un logiciel FTP pour modifier directement des fichiers en ligne, tel que CuteFTP. En raison d'une configuration d'encodage logicielle incorrecte, un encodage incorrect est converti.

  3. Certains amis qui louent des hôtes virtuels, même si les trois encodages ci-dessus sont correctement définis, il y a toujours des caractères tronqués. Par exemple, si la page Web est codée en GB2312, elle est toujours reconnue comme UTF-8 lorsqu'elle est ouverte par des navigateurs tels que IE. Le HEAD de la page Web a déjà indiqué qu'il s'agit de GB2312 après avoir modifié manuellement le codage du navigateur en GB2312. , la page s'affiche normalement. La raison en est que le serveur Apache définit le codage global par défaut du serveur et ajoute AddDefaultCharset UTF-8 dans httpd.conf. A ce moment, le serveur enverra d'abord l'en-tête HTTP au navigateur, et sa priorité est supérieure à l'encodage déclaré dans la page. Naturellement, le navigateur ne le reconnaîtra pas correctement. Il existe deux solutions. Les administrateurs doivent ajouter AddDefaultCharset GB2312 au fichier de configuration de leur propre machine virtuelle pour remplacer la configuration globale, ou la configurer en .htaccess dans leur propre répertoire.

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!

Déclaration:
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