Maison > Article > base de données > Problèmes avec les données chinoises dans le didacticiel MySQL
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"
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
-- 查看服务器识别的全部字符集show character set;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;;
; Le jeu de caractères de la base de données est utf8
; >
utf8
utf8
.
utf8
, alors que le jeu de caractères par défaut pour le traitement externe par le serveur est , créant ainsi une contradiction. utf8
Modifier le jeu de caractères par défaut reçu par le serveur en
.
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 :
.gbk
-- 修改服务器默认接收的字符集为 GBK(不区分大小写)set character_set_client = gbk;
utf8
Comme 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
gbk
Dans 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, 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!