Maison Les sujets phpmysql Comment résoudre le code chinois tronqué dans php mysql ?

Comment résoudre le code chinois tronqué dans php mysql ?

Nov 03, 2020 pm 01:53 PM
mysql php

Solution au code tronqué chinois php mysql : utilisez d'abord la balise méta pour définir "l'encodage de la déclaration de page" sur GB2312 et UTF-8 ; puis utilisez mysql_query() pour définir "l'encodage de la connexion à la base de données" et assurez-vous que "Encodage de déclaration de page" Il peut être cohérent avec "l'encodage de connexion à la base de données".

Comment résoudre le code chinois tronqué dans php mysql ?

Tutoriels recommandés : Tutoriel vidéo MySQL, Tutoriel vidéo PHP

De manière générale, il y a deux raisons à l'apparition de caractères tronqués. Premièrement, cela est dû à une erreur dans le paramètre d'encodage (charset), ce qui amène le navigateur à analyser avec un mauvais encodage, ce qui entraîne un "livre céleste" désordonné. " qui remplit l'écran. Deuxièmement, le fichier est ouvert, puis enregistré dans le mauvais encodage. Par exemple, un fichier texte a été initialement encodé en GB2312, mais il a été ouvert en encodage 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 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 un mauvais encodage pendant le travail, des caractères tronqués apparaîtront dès que vous enregistrez. après avoir effectué la modification.

2. Encodage de la déclaration de page : Dans le code HTML HEAD, vous pouvez utiliser (ce phrase Il doit être écrit devant XXX, sinon la page sera vide (IE+PHP uniquement)) pour indiquer au navigateur quel encodage la page Web utilise actuellement. le développement sont deux encodages GB2312 et UTF-8

3. Encodage de connexion à la base de données : fait référence à l'encodage utilisé pour transmettre des 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, comme MySQL. La valeur interne par défaut est l'encodage latin1, ce qui signifie que Mysql stocke les données en encodage latin1. Les données transmises à Mysql dans d'autres encodages seront converties en encodage latin1

Je sais. où l'encodage est impliqué dans le développement WEB. Nous connaissons également la cause des caractères tronqués : les trois paramètres d'encodage ci-dessus sont incohérents puisque la plupart des différents encodages sont compatibles avec l'ASCII, les symboles anglais n'apparaîtront pas et les caractères chinois n'auront pas de chance ici. 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. Il s'agit de la cause la plus courante de caractères tronqués à l'heure actuelle, les données sont directement SÉLECTIONNÉES. dans le script PHP est tronqué et doit être utilisé avant l'interrogation. :

mysql_query("SET NAMES GBK");
//或
mysql_query("SET NAMES GB2312");
Copier après la connexion

pour définir l'encodage de la connexion MYSQL et garantir que l'encodage de la déclaration de page est cohérent avec l'encodage de la 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");
Copier après la connexion

Notez qu'il s'agit d'UTF8 au lieu de l'UTF-8 couramment utilisé si l'encodage déclaré sur la page est cohérent avec l'encodage interne. Encodage de la base de données, l'encodage de connexion n'est pas requis.

Remarque : En fait, l'entrée et la sortie des données de MYSQL sont plus rapides que ce qui précède. Pour faire plus compliqué, 2 encodages par défaut sont définis dans MYSQL. fichier de configuration 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 respectivement le client par défaut. L'encodage utilisé dans la connexion finale et la base de données. 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, pour indiquer au serveur MYSQL quel est l'encodage des données client reçues, au lieu d'utiliser l'encodage par défaut

2. 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 voit dans le navigateur lors de la création de la page est plus susceptible d'être modifié après la publication, provoqué par l'ouverture du fichier. page dans le mauvais encodage, puis enregistrez-la. 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 l'encodage 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.

Solution aux codes tronqués

Pour résoudre le problème du code tronqué, vous devez d'abord déterminer quel encodage votre base de données utilise. S'il n'est pas spécifié, la valeur par défaut est latin1.

Les trois jeux de caractères que nous utilisons le plus devraient être gb2312, gbk et utf8.

那么我们如何去指定数据库的字符集呢?下面也gbk为例

【在MySQL Command Line Client创建数据库】

mysql> CREATE TABLE `mysqlcode` (
    -> `id` TINYINT( 255 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    -> `content` VARCHAR( 255 ) NOT NULL
    -> ) TYPE = MYISAM CHARACTER SET gbk COLLATE gbk_chinese_ci;
Query OK, 0 rows affected, 1 warning (0.03 sec)
mysql> desc mysqlcode;
+---------+-----------------------+------+-----+---------+----------------+
| Field   | Type                  | Null | Key | Default | Extra          |
+---------+-----------------------+------+-----+---------+----------------+
| id      | tinyint(255) unsigned | NO   | PRI |         | auto_increment |
| content | varchar(255)          | NO   |     |         |                |
+---------+-----------------------+------+-----+---------+----------------+
2 rows in set (0.02 sec)
Copier après la connexion

其中后面的TYPE = MYISAM CHARACTER SET gbk COLLATE gbk_chinese_ci;

就是指定数据库的字符集,COLLATE (校勘),让mysql同时支持多种编码的数据库。

当然我们也可以通过如下指令修改数据库的字符集

alter database da_name default character set 'charset'.
Copier après la connexion

客户端以 gbk格式发送 ,可以采用下述配置:

SET character_set_client='gbk'
SET character_set_connection='gbk'
SET character_set_results='gbk'
Copier après la connexion

这个配置就等价于 SET NAMES 'gbk'。

现在对刚才创建的数据库操作

mysql> use test;
Database changed
mysql> insert into mysqlcode values(null,'php爱好者');
ERROR 1406 (22001): Data too long for column 'content' at row 1
Copier après la connexion

没有指定字符集为gbk,插入时出错

mysql> set names 'gbk';
Query OK, 0 rows affected (0.02 sec)
Copier après la connexion

指定字符集为 gbk

mysql> insert into mysqlcode values(null,'php爱好者');
Query OK, 1 row affected (0.00 sec)
Copier après la connexion

插入成功

mysql> select * from mysqlcode;
+----+-----------+
| id | content   |
+----+-----------+
| 1  | php爱好着 |
+----+-----------+
1 row in set (0.00 sec)
Copier après la connexion

在没有指定字符集gbk时读取也会出现乱码,如下

mysql> select * from mysqlcode;
+----+---------+
| id | content |
+----+---------+
| 1  | php???  |
+----+---------+
1 row in set (0.00 sec)
Copier après la connexion

【在phpmyadmin创建数据库,并指定字符集】

表类型根据自己需要选,这里选MyISAM(支持全文检索);
整理选择 gbk_chinese_ci 也就是gbk字符集
gbk_bin 简体中文, 二进制。gbk_chinese_ci 简体中文, 不区分大小写。

在刚才创建的数据库插入数据库

再浏览时发现是乱码

为什么呢?是因为数据库为gbk字符集,而我们操作时没有指定为gbk

回到数据库首页

可以看到 mysql 连接校对默认的latin1_bin。我们将其改为gbk_chinese_ci

再插入一条数据。看,这条已经正常了

【解决php读取数据库乱码】

仍以数据库mysqlcode为例

<?php 
$conn = mysql_connect("localhost","root","89973645"); 
mysql_query("set names &#39;gbk&#39;");//这就是指定数据库字符集,一般放在连接数据库后面就系了 
mysql_select_db("test"); 
 
$sql = "select * from mysqlcode"; 
$result = mysql_query($sql,$conn); 
 
?> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<title>mysql 字符编码</title> 
</head> 
 
<body> 
<table width="300" height="32" border="1" align="center" cellpadding="0" cellspacing="0"> 
 <tr> 
    <td width="71" align="center">id</td> 
    <td width="229" align="center">内容</td> 
 </tr> 
 <?php while($row = mysql_fetch_assoc($result)){ 
 echo "   
 <tr> 
    <td align=/"center/">".$row[&#39;id&#39;]."</td> 
    <td>".$row[&#39;content&#39;]."</td> 
 </tr>"; 
}?>   
</table> 
</body> 
</html> 
<?php mysql_free_result($result);?>
Copier après la connexion

 如果我们将mysql_query("set names 'gbk'");注释掉,肯定时乱码

加上那句又正常了

一句

你数据库用什么编码,在对数据库操作之前就set names '你的编码';

更多编程相关知识,请访问:编程学习网站!!

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 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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment créer Navicat Premium Comment créer Navicat Premium Apr 09, 2025 am 07:09 AM

Créez une base de données à l'aide de NAVICAT Premium: Connectez-vous au serveur de base de données et entrez les paramètres de connexion. Cliquez avec le bouton droit sur le serveur et sélectionnez Créer une base de données. Entrez le nom de la nouvelle base de données et le jeu de caractères spécifié et la collation. Connectez-vous à la nouvelle base de données et créez le tableau dans le navigateur d'objet. Cliquez avec le bouton droit sur le tableau et sélectionnez Insérer des données pour insérer les données.

MySQL: Concepts simples pour l'apprentissage facile MySQL: Concepts simples pour l'apprentissage facile Apr 10, 2025 am 09:29 AM

MySQL est un système de gestion de base de données relationnel open source. 1) Créez une base de données et des tables: utilisez les commandes CreateDatabase et CreateTable. 2) Opérations de base: insérer, mettre à jour, supprimer et sélectionner. 3) Opérations avancées: jointure, sous-requête et traitement des transactions. 4) Compétences de débogage: vérifiez la syntaxe, le type de données et les autorisations. 5) Suggestions d'optimisation: utilisez des index, évitez de sélectionner * et utilisez les transactions.

L'avenir de PHP: adaptations et innovations L'avenir de PHP: adaptations et innovations Apr 11, 2025 am 12:01 AM

L'avenir de PHP sera réalisé en s'adaptant aux nouvelles tendances technologiques et en introduisant des fonctionnalités innovantes: 1) s'adapter aux architectures de cloud computing, de conteneurisation et de microservice, en prenant en charge Docker et Kubernetes; 2) introduire des compilateurs JIT et des types d'énumération pour améliorer l'efficacité des performances et du traitement des données; 3) Optimiser en continu les performances et promouvoir les meilleures pratiques.

PHP vs Python: comprendre les différences PHP vs Python: comprendre les différences Apr 11, 2025 am 12:15 AM

PHP et Python ont chacun leurs propres avantages, et le choix doit être basé sur les exigences du projet. 1.Php convient au développement Web, avec une syntaxe simple et une efficacité d'exécution élevée. 2. Python convient à la science des données et à l'apprentissage automatique, avec une syntaxe concise et des bibliothèques riches.

Comment créer une nouvelle connexion à MySQL dans Navicat Comment créer une nouvelle connexion à MySQL dans Navicat Apr 09, 2025 am 07:21 AM

Vous pouvez créer une nouvelle connexion MySQL dans NAVICAT en suivant les étapes: ouvrez l'application et sélectionnez une nouvelle connexion (CTRL N). Sélectionnez "MySQL" comme type de connexion. Entrez l'adresse Hostname / IP, le port, le nom d'utilisateur et le mot de passe. (Facultatif) Configurer les options avancées. Enregistrez la connexion et entrez le nom de la connexion.

MySQL et SQL: Compétences essentielles pour les développeurs MySQL et SQL: Compétences essentielles pour les développeurs Apr 10, 2025 am 09:30 AM

MySQL et SQL sont des compétences essentielles pour les développeurs. 1.MySQL est un système de gestion de base de données relationnel open source, et SQL est le langage standard utilisé pour gérer et exploiter des bases de données. 2.MySQL prend en charge plusieurs moteurs de stockage via des fonctions de stockage et de récupération de données efficaces, et SQL termine des opérations de données complexes via des instructions simples. 3. Les exemples d'utilisation comprennent les requêtes de base et les requêtes avancées, telles que le filtrage et le tri par condition. 4. Les erreurs courantes incluent les erreurs de syntaxe et les problèmes de performances, qui peuvent être optimisées en vérifiant les instructions SQL et en utilisant des commandes Explication. 5. Les techniques d'optimisation des performances incluent l'utilisation d'index, d'éviter la numérisation complète de la table, d'optimiser les opérations de jointure et d'améliorer la lisibilité du code.

PHP: Est-il en train de mourir ou est-ce simplement de s'adapter? PHP: Est-il en train de mourir ou est-ce simplement de s'adapter? Apr 11, 2025 am 12:13 AM

Le PHP n'est pas en train de mourir, mais d'adapter et d'évoluer constamment. 1) PHP a subi plusieurs itérations de version depuis 1994 pour s'adapter aux nouvelles tendances technologiques. 2) Il est actuellement largement utilisé dans le commerce électronique, les systèmes de gestion de contenu et d'autres domaines. 3) PHP8 introduit le compilateur JIT et d'autres fonctions pour améliorer les performances et la modernisation. 4) Utilisez OPCACHE et suivez les normes PSR-12 pour optimiser les performances et la qualité du code.

Comment ouvrir phpmyadmin Comment ouvrir phpmyadmin Apr 10, 2025 pm 10:51 PM

Vous pouvez ouvrir PHPMYADMIN via les étapes suivantes: 1. Connectez-vous au panneau de configuration du site Web; 2. Trouvez et cliquez sur l'icône PHPMYADMIN; 3. Entrez les informations d'identification MySQL; 4. Cliquez sur "Connexion".

See all articles