Maison > Article > base de données > Explication détaillée de la base de données MySQL Résumé de la solution tronquée en chinois (images et textes)
Cet article présente principalement les informations pertinentes sur la base de données MySQL et résume les solutions aux caractères chinois tronqués. La base de données enregistre les caractères chinois, nous rencontrons donc souvent des caractères tronqués dans la base de données. Voici plusieurs méthodes. en avoir besoin peut Pour référence,
Solution tronquée en chinois MySQL
Avant-propos :
MySQL est une base de données de données très couramment utilisée dans nos projets. Mais comme nous devons sauvegarder les caractères chinois dans la base de données, nous rencontrons souvent des caractères tronqués dans la base de données. Voyons comment résoudre complètement le problème des caractères chinois tronqués dans la base de données.
1. Code chinois tronqué
1.1. Code chinois tronqué
create table user(name varchar(11)); # 创建user表 insert into table user("carl"); # 添加数据 select * from user;
insert into user value("哈哈");
Les caractères chinois ne peuvent pas être insérés :
Vérifiez l'encodage des caractères du tableau
mysql> show create table user \G; *************************** 1. row *************************** Table: user Create Table: CREATE TABLE `user` ( `name` varchar(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 1 row in set (0.00 sec)
Nous pouvons voir que le jeu de caractères par défaut de la table est
. Nous créons donc le tableau. Vous devez spécifier le jeu de caractères du tableau :
create table user(name varchar(11)) default charset=utf8;
De cette façon, vous pouvez accéder au tableau sous Linux et vous pouvez insérer et accéder au tableau .
1.3. Codage de la base de données et du système d'exploitation
Bien que le chinois puisse être affiché normalement côté serveur, des caractères tronqués peuvent être affichés côté client. Parce que notre serveur est UTF8.
Et il y a aussi des problèmes avec l'encodage de la base de données.
Ici, nous pouvons voir que les jeux de caractères de Character_sert_database et Character_set_server sont tous deux latin1. Ensuite, dans base de données mysql, les jeux de caractères du serveur, de la base de données et. Les tables sont toutes La valeur par défaut est latin1. Voyons comment résoudre la situation tronquée de MySQL.
2. Paramètres MySQL Plage de variables
2.1, sessionPortée
Afficher l'encodage de la base de données :
show variables like '%char%';
Modifier l'encodage des caractères :
set character_set_server=utf8; set character_set_database=utf8; show variables like '%char%';
Nous pouvons voir que le jeu de caractères a été modifié en utf8. Mais il y a un problème ici, c'est-à-dire que si nous rouvrons une fenêtre de commande et vérifions l'encodage des données, l'écran suivant apparaîtra :
2.2, portée globale
La portée des variables de configuration MySQL est par défaut la portée de la session. Si vous définissez le jeu de caractères de plusieurs sessions, vous devez définir la plage globale : Définir les variables [globales|session]...
set global character_set_database=utf8; set global character_set_server=utf8; show variables like '%char%';
Quand nous visualisons Les caractères MySQL à travers les sessions Set verront tous utf8. Si vous pensez que tout va bien, vous vous trompez totalement.
2.3. Définir la portée globale des données
Lorsque notre base de données redémarre, vous constaterez que la valeur de définition de la portée globale est à nouveau changée en latin1.
service mysqld restart mysql -uroot -pyourpassword show variables like '%char%';
N'ayez pas peur, laissez-moi vous apprendre l'astuce ultime :
Modifier le mysql fichier de configuration /etc/my.cnf.
[mysqld] character-set-server=utf8 [client] default-character-set=utf8 [mysql] default-character-set=utf8
Veuillez faire attention à l'emplacement de ces configurations de paramètres, sinon le service mysql risque de ne pas démarrer :
D'accord. Maintenant, si vous redémarrez le service mysql, vous constaterez également que son jeu de caractères est utf8.
Et nous n'avons pas besoin de spécifier l'encodage des caractères lorsque nous créons la table , la valeur par défaut est utf8 ;
drop database test; create database test; use test; create table user(name varchar(11)); show create table user \G;
3. Résumé
Je vois que de nombreuses réponses sur Internet sont directement définies. La définition du codage des caractères de MySQL au niveau de la session est une solution temporaire plutôt qu'une solution permanente. Nous devons encore résoudre ce problème à la source. Il s'agit de modifier le fichier de configuration par défaut de MySQL et de changer son jeu de caractères en UTF8 pouvant utiliser 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!