Maison  >  Article  >  base de données  >  Problèmes avec les données chinoises dans le didacticiel MySQL

Problèmes avec les données chinoises dans le didacticiel MySQL

藏色散人
藏色散人avant
2018-11-22 16:30:362241parcourir

Cet article présente principalement les problèmes liés aux données mysql chinoises. J'espère qu'il sera utile aux amis dans le besoin !

Tutoriel de référence recommandé : "Tutoriel MySQL"

Problème de données chinoisesèmes avec les données chinoises dans le didacticiel MySQL>

L'essence du problème des données chinoises est le problème du jeu de caractères .

Étant donné que les ordinateurs ne reconnaissent que les données binaires et que les humains sont plus enclins à reconnaître les caractères (symboles), une correspondance entre les binaires et les caractères est nécessaire, qui est le jeu de caractères .

Lorsque nous insérons des données chinoises dans le serveur via le client de la base de données MySQL, cela peut échouer. La raison peut être que les paramètres de jeu de caractères du client et du serveur sont différents, par exemple :

  • Le jeu de caractères du client est gbk, alors un caractère chinois correspond à deux octets

  • Le jeu de caractères du serveur est , puis un caractère chinois, correspondant à trois octets. utf8

Cela entraînera évidemment des problèmes lors du processus de conversion d'encodage, entraînant l'échec de l'insertion des données chinoises.

Étant donné que certaines caractéristiques de tous les serveurs de base de données sont conservées via des variables côté serveur, le système lira d'abord ses propres variables pour voir la manifestation spécifique. Dans ce cas, nous pouvons utiliser l'instruction suivante pour vérifier quels jeux de caractères le serveur reconnaît :

-- 查看服务器识别的全部字符集show character set;

Problèmes avec les données chinoises dans le didacticiel MySQL

Grâce à la requête ci-dessus, nous trouverons :

Le Le serveur est omnipotent et prend en charge tous les jeux de caractères.

Étant donné que le serveur prend en charge de nombreux jeux de caractères, il y aura toujours un jeu de caractères qui est le jeu par défaut du serveur pour traiter avec les clients. Par conséquent, nous pouvons afficher le jeu de caractères de traitement externe par défaut du serveur via l'instruction suivante :

-- 查看服务器默认的对外处理的字符集show variables like &#Problèmes avec les données chinoises dans le didacticiel MySQL9;character_set%&#Problèmes avec les données chinoises dans le didacticiel MySQL9;;

Problèmes avec les données chinoises dans le didacticiel MySQL

  • Remarque Problèmes avec les données chinoises dans le didacticiel MySQL : La transmission client par défaut du serveur. Le jeu de caractères des données entrantes est

     ; Le jeu de caractères de la base de données est utf8 ; >

  • Annotation Problèmes avec les données chinoises dans le didacticiel MySQL : Le jeu de caractères de traitement externe par défaut du serveur
  • .

    utf8

  • à travers la requête ci-dessus, nous trouverons :
  • Le traitement externe par défaut du serveur le jeu de caractères est

    utf8.

  • Ensuite, à notre tour, nous vérifions le jeu de caractères pris en charge par le client via les propriétés du client :
  • utf8

  • Évidemment , nous avons trouvé la source du problème, qui est bien :
Le jeu de caractères supporté par le client est

, alors que le jeu de caractères par défaut pour le traitement externe par le serveur est , créant ainsi une contradiction. utf8

Maintenant que le problème a été trouvé, la solution est :

Modifier le jeu de caractères par défaut reçu par le serveur en

.Problèmes avec les données chinoises dans le didacticiel MySQL

Dans ce cas, lorsque nous insérons à nouveau les données chinoises, l'insertion sera réussie ! Mais lorsque nous avons vérifié les données, nous avons découvert un autre problème : les données chinoises que nous avions insérées auparavant étaient tronquées ! Mais c'est normal, car lors de l'interrogation, la source des données est le serveur (), et le client analyse les données uniquement au format gbk, on s'attend donc à ce que les caractères soient tronqués. être affiché ! utf8 Par conséquent, la solution est la suivante :

Modifier le jeu de caractères de données fourni par le serveur au client en

.gbk

-- 修改服务器默认接收的字符集为 GBK(不区分大小写)set character_set_client = gbk;

utf8Comme ci-dessus Comme le montre la figure, le problème de l'insertion des données chinoises dans le serveur a été résolu ! gbk

De plus, l'instruction SQL que nous avons utilisée auparavant :

gbkDans ce cas, chaque fois que nous redémarrons le client, nous devons le réinitialiser dans l'ordre, ce qui est plus gênant, donc nous pouvons utiliser le raccourci La méthode de réglage est :

-- 修改服务器给客户端的数据字符集为 GBK(不区分大小写)set character_set_results = gbk;
Par exemple,

Problèmes avec les données chinoises dans le didacticiel MySQL

signifie que l'instruction ci-dessus modifiera les valeurs de trois variables en même temps. Parmi eux,

est la couche de connexion, qui est l'intermédiaire pour la conversion des jeux de caractères. Si elle est cohérente avec les jeux de caractères de

et

, elle sera plus efficace, et peu importe. est incohérent.

-- 修改的只是会话级别,即当前客户端当次连接有效,关闭后失效set 变量 = 值;

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer