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)

Explication détaillée de la base de données MySQL Résumé de la solution tronquée en chinois (images et textes)

黄舟
黄舟original
2017-03-16 14:18:111341parcourir

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;

Explication détaillée de la base de données MySQL Résumé de la solution tronquée en chinois (images et textes)


insert into user value("哈哈");

Les caractères chinois ne peuvent pas être insérés :

Explication détaillée de la base de données MySQL Résumé de la solution tronquée en chinois (images et textes)

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 .

Explication détaillée de la base de données MySQL Résumé de la solution tronquée en chinois (images et textes)

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.

Explication détaillée de la base de données MySQL Résumé de la solution tronquée en chinois (images et textes)

Et il y a aussi des problèmes avec l'encodage de la 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)

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%';

Explication détaillée de la base de données MySQL Résumé de la solution tronquée en chinois (images et textes)

Modifier l'encodage des caractères :


set character_set_server=utf8;
set character_set_database=utf8;
show variables like '%char%';

Explication détaillée de la base de données MySQL Résumé de la solution tronquée en chinois (images et textes)

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 :

Explication détaillée de la base de données MySQL Résumé de la solution tronquée en chinois (images et textes)

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%';

Explication détaillée de la base de données MySQL Résumé de la solution tronquée en chinois (images et textes)

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 :

Explication détaillée de la base de données MySQL Résumé de la solution tronquée en chinois (images et textes)

D'accord. Maintenant, si vous redémarrez le service mysql, vous constaterez également que son jeu de caractères est utf8.

Explication détaillée de la base de données MySQL Résumé de la solution tronquée en chinois (images et textes)

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;

Explication détaillée de la base de données MySQL Résumé de la solution tronquée en chinois (images et textes)

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!

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