Maison > Article > base de données > code utf8 mysql tronqué
L'encodage UTF-8 est actuellement le format d'encodage de caractères le plus largement utilisé, et MySQL peut également prendre en charge l'utilisation de l'encodage UTF-8 pour stocker des données. Cependant, lors de l'utilisation de MySQL pour stocker des données codées en UTF-8, des caractères tronqués peuvent apparaître. Cet article présentera les raisons et les solutions pour rencontrer des caractères tronqués encodés UTF-8 dans MySQL.
Pour des raisons historiques, MySQL utilise par défaut le format d'encodage Latin1 (ISO-8859-1). Ce format d'encodage convient à la plupart des langues occidentales. Mais pour les langues comme les langues asiatiques et les langues du Moyen-Orient qui utilisent des jeux de caractères complexes, cela semble insuffisant.
Avec le développement de la technologie Internet, de plus en plus de pays et de régions utilisent des jeux de caractères de l'alphabet non latin pour la communication textuelle. Afin de résoudre ce problème, MySQL a introduit le format de codage UTF-8, permettant à MySQL de stocker du texte dans une langue plus riche. Le codage UTF-8 (8-bit Unicode Transformation Format) est un codage de caractères de longueur variable qui prend en charge tous les caractères de la norme Unicode. Cependant, lorsque le codage UTF-8 est stocké dans MySQL, des caractères tronqués peuvent apparaître.
Causes et solutions aux caractères tronqués :
Problème 1 : Le CHARSET de la table MySQL n'est pas au format UTF-8.
Lors de la création d'une table, si CHARSET n'est pas précisé, le CHARSET de la base de données sera utilisé par défaut. Par conséquent, lorsque la base de données CHARSET n'est pas UTF-8, les données stockées en codage UTF-8 seront tronquées.
1.1 Vérifiez le CHARSET de la base de données
Vous devez d'abord vérifier le CHARSET de la base de données Vous pouvez vérifier le CHARSET de la base de données actuelle via la commande suivante :
mysql> show create database databaseName;
1.2 Modifier le CHARSET de la base de données
Si le CHARSET de. la base de données n'est pas UTF-8, vous devez modifier le CHARSET de la base de données. Vous pouvez modifier le CHARSET de la base de données en suivant les étapes suivantes :
1.2.1 Sauvegarder la base de données
Parce que nous devons modifier le CHARSET de la base de données, nous devons d'abord sauvegarder la base de données.
1.2.2 Modifier l'encodage par défaut de la base de données
Dans MySQL, vous pouvez spécifier l'encodage par défaut lors de la création de la base de données. L'encodage par défaut est généralement défini sur UTF-8. Voici une démonstration de la façon de modifier l'encodage par défaut. .
Modifiez le fichier de configuration MySQL /etc/mysql/mysql.conf.d/mysqld.conf, recherchez "[mysqld]" et ajoutez le contenu suivant :
[mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_general_ci
Une fois la modification terminée, enregistrez et quittez.
1.2.3 Modifier l'encodage de la base de données et des tables
Dans MySQL, vous pouvez vérifier l'encodage de la base de données, de la table et de la colonne via l'instruction SQL suivante :
/*查看数据库使用的编码*/ SHOW VARIABLES LIKE 'character_set_database'; /*查看数据表使用的编码*/ SHOW FULL COLUMNS FROM 表名; /*查看列使用的编码*/ SELECT column_name, character_set_name FROM information_schema.columns WHERE table_name='表名';
Si l'encodage actuel n'utilise pas UTF-8, alors vous devez pour changer la base de données, la table, l'encodage des colonnes a été modifié en UTF-8, qui peut être modifié via l'instruction SQL suivante :
/*修改数据库编码为 utf8mb4 */ ALTER DATABASE databaseName CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; /*修改表编码为 utf8mb4*/ ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; /*修改列编码为 utf8mb4*/ ALTER TABLE 表名 MODIFY COLUMN 列名 varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Une fois la modification terminée, exécutez à nouveau la méthode d'encodage de visualisation ci-dessus pour confirmer que CHARSET est un encodage UTF-8.
Problème 2 : l'encodage UTF-8 n'est pas défini pour la connexion à la base de données
Lorsque l'application se connecte à la base de données MySQL, vous devez spécifier le jeu de caractères de connexion. Si l'encodage UTF-8 n'est pas défini, la lecture échouera. et l'écriture de données codées en UTF-8. Des caractères tronqués apparaissent. Lors de la connexion à la base de données MySQL, vous pouvez définir l'encodage UTF-8 via l'instruction suivante :
SET NAMES utf8mb4;
Question 3 : Le client MySQL affiche des problèmes d'encodage
Lors de l'utilisation de la ligne de commande pour exécuter des instructions SQL, des caractères tronqués peuvent apparaître, principalement parce que le client Le terminal affiche des caractères tronqués. Ce problème peut être résolu en définissant le format d'encodage du client MySQL.
3.1 Le client Linux/MacOSX résout les caractères tronqués
Dans les systèmes Linux et MacOSX, vous pouvez définir le format d'encodage du client MySQL via la commande suivante :
export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8
Une fois le réglage terminé, vous pouvez exécuter le client MySQL, exécuter des instructions SQL , et affiche normalement le caractère chinois.
3.2 Le client Windows résout les caractères tronqués
Dans le système Windows, vous pouvez définir le format d'encodage du client MySQL en suivant les étapes suivantes :
Ouvrir le Panneau de configuration-> Système et sécurité-> ; Variables d'environnement
Dans les variables d'environnement, créez une nouvelle variable système :
变量名:LANG 变量值:zh_CN.UTF-8
Une fois les paramètres terminés, vous pouvez exécuter le client MySQL, exécuter des instructions SQL et afficher les caractères chinois normalement.
Résumé :
Lors du stockage de données codées en UTF-8 dans MySQL, des caractères tronqués peuvent apparaître. Les principales raisons du problème de code tronqué sont que le CHARSET de la table n'est pas au format de codage UTF-8, que la connexion à la base de données n'est pas définie sur le codage UTF-8 et que le client MySQL affiche des problèmes de codage. En configurant correctement CHARSET, le jeu de caractères de connexion et le format d'encodage client dans MySQL, le problème de l'encodage UTF-8 des caractères tronqués peut être résolu.
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!