Maison > Article > développement back-end > Que faire si php lit des caractères tronqués dans la base de données
Solution pour la lecture PHP du code de base de données tronqué : 1. Modifier l'encodage du fichier ; 2. Déclarer l'encodage dans le code HTML HEAD ; 3. Modifier l'encodage de la connexion à la base de données ; 4. Définir l'encodage de la déclaration de page et la connexion à la base de données ; encodage cohérent.
L'environnement d'exploitation de ce tutoriel : Système Windows 7, PHP version 5.6. Cette méthode convient à toutes les marques d'ordinateurs.
Recommandé : "Tutoriel vidéo PHP"
La raison pour laquelle la base de données php lit les caractères tronqués
De manière générale, tronqués caractères Il y a deux raisons à cela. Premièrement, le paramètre d'encodage (jeu de caractères) est incorrect, ce qui oblige le navigateur à l'analyser avec un encodage incorrect, ce qui entraîne un "livre céleste" désordonné remplissant l'écran. Deuxièmement, 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 et enregistré en UTF-8. Pour résoudre le problème de code tronqué ci-dessus, vous devez d'abord savoir quels aspects du développement impliquent un encodage :
1. Encodage du fichier : fait référence à l'encodage dans lequel le fichier d'échange (.html, .php, etc.) lui-même est sauvé. 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; être Écrit devant "TItre" Deux encodages
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. confondu avec l'encodage de la base de données elle-même. Par exemple, la valeur interne par défaut de MySQL est l'encodage laTIn1, c'est-à-dire que Mysql stocke les données en encodage laTIn1, et les données transmises à Mysql dans d'autres encodages seront converties en encodage latin1
En sachant où l'encodage est impliqué dans le développement WEB, vous saurez la cause des caractères tronqués : les trois paramètres d'encodage ci-dessus sont incohérents. Étant donné que la plupart des différents encodages sont compatibles avec l'ASCII, les symboles anglais n'apparaîtront pas et le chinois. les caractères n'auront pas de chance. Voici quelques situations d'erreur courantes et solutions :1. La base de données utilise le codage UTF8 et le codage de la déclaration de page est GB2312. C'est la cause la plus courante de caractères tronqués à l'heure actuelle. les données SELECT directes dans le script PHP seront tronquées et vous devrez les utiliser avant d'interroger :
mysql_query(”SET NAMES GBK“); 或mysql_query(”SET NAMES GB2312“);Pour définir l'encodage de connexion MYSQL, assurez-vous que l'encodage de la déclaration de page est cohérent avec l'encodage de connexion défini ici ( GBK est une extension de GB2312). Si la page est encodée en UTF-8, vous pouvez utiliser :
mysql_query(”SET NAMES UTF8“);Notez qu'il s'agit d'UTF8 au lieu de l'UTF-8 couramment utilisé si l'encodage est déclaré par la page. est cohérent avec l'encodage interne de la base de données, l'encodage de connexion ne peut pas être défini Remarque : En fait, l'entrée et la sortie des données de MYSQL sont plus compliquées que ce qui est mentionné ci-dessus. . Il existe deux encodages par défaut définis dans le fichier de configuration MYSQL my.ini, qui sont le jeu de caractères par défaut dans [client] et le jeu de caractères par défaut dans [mysqld] pour définir la connexion client par défaut et l'encodage utilisé à l'intérieur. la base de données. L'encodage que nous avons spécifié ci-dessus est en fait le paramètre de ligne de commande caractère_set_client lorsque le client MYSQL se connecte au serveur, qui indique au serveur MYSQL quel est l'encodage des données client reçues, au lieu d'utiliser l'encodage par défaut
. L'encodage de la déclaration de page est incohérent avec l'encodage du fichier lui-même. Cela arrive rarement, car si l'encodage est incohérent, ce que l'artiste verra dans le navigateur sera des caractères tronqués. La plupart du temps, quelques petits bugs seront corrigés après la publication. Causé par l'ouverture de la page avec un mauvais encodage, puis par 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 ont encore des codes tronqués même si les trois encodages ci-dessus sont correctement définis. 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.
Pour plus de connaissances sur la programmation, veuillez visiter :
Vidéo de programmationCe 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!