Maison >base de données >tutoriel mysql >Comment résoudre les caractères tronqués dans la requête chinoise MySQL
La raison pour laquelle la requête chinoise MySQL est tronquée
Le jeu de caractères par défaut de MySQL est LATIN1 et UTF-8 est un format d'encodage plus largement utilisé. Si nous utilisons le codage UTF-8 pour stocker les données chinoises, mais que nous utilisons le codage LATIN1 lors de l'interrogation, nous aurons des résultats de requête tronqués.
Dans MySQL, nous pouvons résoudre le problème des requêtes chinoises tronquées des manières suivantes :
Vérifiez l'encodage de la base de données et de la table
Nous devons d'abord vérifier si l'encodage de la base de données et de la table est correct pour s'assurer qu'ils sont cohérents avec les données. Le format d'encodage lors du stockage est cohérent. Nous pouvons interroger le format d'encodage de la base de données et de la table via l'instruction SQL suivante :
SHOW CREATE TABLE table_name; SHOW VARIABLES LIKE 'character_set_database';
Dans les résultats de la requête, nous pouvons voir le format d'encodage de la base de données et de la table, ainsi que les jeux de caractères du serveur et du client, et si le jeu de caractères de la connexion actuelle correspond.
Définir l'encodage de la connexion MySQL
Vous pouvez définir le format d'encodage de la connexion client MySQL sur UTF-8 via l'instruction de configuration CONFIG de MySQL pour éviter les caractères tronqués lors de la lecture des données. Nous pouvons utiliser la commande suivante lors de la connexion au serveur MySQL :
mysql --default-character-set=utf8 -u username -p
Cette commande définira automatiquement le format d'encodage du client sur UTF-8 lors de l'établissement d'une connexion avec le serveur MySQL, garantissant qu'aucun caractère tronqué n'apparaîtra lors de la lecture des données.
Modifier le fichier de configuration MySQL
Si nous utilisons MySQL 5.5 ou supérieur, dans le fichier de configuration my.cnf, nous pouvons définir le format d'encodage du serveur MySQL sur UTF-8 via les paramètres suivants :
[client] default-character-set=utf8 [mysqld] init_connect='SET NAMES utf8' character-set-server=utf8 collation-server=utf8_general_ci
Dans ce fichier de configuration, nous pouvons définir le format d'encodage par défaut du client et du serveur sur UTF-8 pour garantir qu'il n'y aura pas de caractères tronqués lors de la lecture des données.
Définissez l'encodage des champs MySQL sur UTF-8
S'il y a déjà des données dans notre base de données qui utilisent un format d'encodage incorrect, nous pouvons définir le format d'encodage de tous les champs de la base de données sur UTF-8 via ce qui suit commande UTF-8 :
ALTER DATABASE database_name CHARACTER SET utf8 COLLATE utf8_general_ci; ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
La commande ci-dessus modifiera tous les formats d'encodage de la base de données et des tables en UTF-8 pour garantir qu'aucun caractère tronqué n'apparaîtra lors de la lecture des données.
En utilisation réelle, nous pouvons choisir différentes solutions en fonction de situations spécifiques. Lorsque nous résolvons le problème des caractères tronqués des requêtes chinoises, nous devons prêter attention au fait que la conversion entre différents jeux de caractères nécessite de l'efficacité. Nous devons donc faire un compromis entre efficacité et exactitude, et le baser sur nos besoins commerciaux réels. Choisissez la solution la plus appropriée.
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!