Maison  >  Article  >  base de données  >  Que dois-je faire si MySQL ne peut pas utiliser le chinois ?

Que dois-je faire si MySQL ne peut pas utiliser le chinois ?

PHPz
PHPzoriginal
2023-04-21 10:12:233786parcourir

MySQL est un système de gestion de bases de données relationnelles courant Pour de nombreux développeurs, il est devenu une nécessité pour le travail de développement. Cependant, lors de l'utilisation de MySQL, de nombreux utilisateurs peuvent rencontrer le problème « Impossible d'utiliser le chinois ».

L'incapacité de MySQL à utiliser le chinois se manifeste principalement sous deux aspects : d'une part, les caractères chinois tronqués dans l'interface de ligne de commande MySQL, et d'autre part, le problème du stockage et des requêtes des caractères chinois dans la base de données MySQL. Cet article explorera ces deux aspects des problèmes en détail et proposera les solutions correspondantes.

Caractères chinois tronqués dans l'interface de ligne de commande MySQL

L'interface de ligne de commande MySQL est une fonction essentielle de MySQL. Les développeurs peuvent exécuter diverses commandes dans cette interface. Cependant, de nombreux utilisateurs trouveront des caractères chinois tronqués lorsqu'ils utiliseront l'interface de ligne de commande MySQL. Cela est principalement dû au fait que le jeu de caractères par défaut de MySQL est « latin1 » au lieu de « utf8 ».

Ce qui suit décrit comment résoudre le problème du chinois tronqué dans l'interface de ligne de commande MySQL.

Méthode 1 : Spécifiez un nom d'utilisateur prenant en charge les jeux de caractères chinois en ajoutant le paramètre "-u" lors de l'utilisation de l'outil de ligne de commande "mysql".

Par exemple, utilisez la commande suivante pour spécifier le nom d'utilisateur « root » et le mot de passe « password » :

mysql -u root -ppassword

Méthode 2 : utilisez la commande suivante pour afficher le jeu de caractères par défaut MySQL actuel :

mysql> show variables like '%character%';

Cette commande affichera les paramètres actuels du jeu de caractères, Parmi eux, les valeurs des trois paramètres "character_set_client", "character_set_connection" et "character_set_results" sont toutes "latin1".

Afin de résoudre le problème du chinois tronqué dans l'interface de ligne de commande, vous devez modifier les valeurs​​de ces trois paramètres en "utf8". L'objectif peut être atteint grâce à la commande suivante :

mysql> set character_set_client=utf8;
mysql> set character_set_connection=utf8;
mysql> set character_set_results=utf8;

Méthode 3 : Modifier le fichier de configuration MySQL "my.cnf".

Dans le fichier de configuration MySQL, recherchez les trois lignes de code suivantes :

character-set-client-handshake = FALSE 
character-set-server = utf8mb4 
collation-server = utf8mb4_unicode_ci

Supprimez les commentaires de ces trois lignes de code et remplacez la valeur par "utf8", comme indiqué ci-dessous :

character-set-client-handshake = FALSE 
character-set-server = utf8 
collation-server = utf8_general_ci

Stockage des caractères chinois dans la base de données MySQL et problèmes de requête

En plus du problème de confusion du chinois dans l'interface de ligne de commande, la base de données MySQL elle-même peut également avoir des problèmes de stockage et de requête des caractères chinois.

Par exemple, lorsque nous insérons des données contenant des caractères chinois dans la base de données MySQL, nous pouvons rencontrer l'erreur suivante :

Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'name' at row 1

Cela est dû au fait que le jeu de caractères par défaut de MySQL est "latin1", et non "utf8". Si vous souhaitez prendre en charge la création de tableaux et le stockage de données en chinois, vous devez définir le jeu de caractères de la structure du tableau sur « utf8 ».

Ce qui suit décrit comment résoudre le problème du stockage et des requêtes des caractères chinois dans la base de données MySQL.

Méthode 1 : résolvez le problème en spécifiant le jeu de caractères comme "utf8" lors de la création de la table.

Par exemple, utilisez la commande suivante pour créer une table nommée "personne" et définissez le jeu de caractères du champ "nom" dans la table sur "utf8" :

CREATE TABLE person (
  id INT UNSIGNED NOT NULL AUTO_INCREMENT,
  name VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  PRIMARY KEY (id)
) DEFAULT CHARSET=utf8;

Méthode 2 : définir les caractères par défaut dans la configuration MySQL file Défini sur "utf8", ce qui fait que toutes les tables utilisent ce jeu de caractères par défaut.

Dans le fichier de configuration MySQL, retrouvez les deux lignes de code suivantes :

character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

Supprimez les commentaires de ces deux lignes de code et changez la valeur en "utf8", comme indiqué ci-dessous :

character-set-server=utf8
collation-server=utf8_general_ci

Pour les tables existantes, vous pouvez pass La commande suivante modifie le jeu de caractères de la structure de la table :

ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

Conclusion

Il y a un problème de jeu de caractères chinois que ce soit dans l'interface de ligne de commande ou dans la base de données MySQL. Lorsque vous rencontrez ce genre de problème, veuillez le résoudre selon les méthodes fournies dans cet article. En ajustant le jeu de caractères, vous pourrez facilement interroger et stocker des données chinoises et éviter divers problèmes rencontrés dans le traitement des caractères chinois.

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