Maison  >  Article  >  base de données  >  Comment résoudre les caractères chinois tronqués dans MySQL

Comment résoudre les caractères chinois tronqués dans MySQL

PHPz
PHPzoriginal
2023-04-21 14:16:5910204parcourir

La base de données MySQL est une base de données relationnelle courante, largement utilisée dans les applications Web, la gestion de données et le stockage de Big Data et dans d'autres domaines. Cependant, dans l'application quotidienne de MySQL, nous rencontrons souvent le problème des caractères chinois tronqués, ce qui affectera l'exactitude et la lisibilité des données. Par conséquent, résoudre efficacement le problème de la confusion du chinois MySQL est très important pour la gestion et l’application des bases de données.

Cet article présentera les causes des caractères chinois tronqués de MySQL et comment résoudre efficacement le problème des caractères chinois tronqués de MySQL.

1. La raison des caractères chinois tronqués de MySQL

Le jeu de caractères par défaut de la base de données MySQL est Latin2 (ISO 8859-2), qui ne prend en charge que certaines lettres, chiffres et quelques caractères spéciaux.

Lorsque nous utilisons d'autres jeux de caractères tels que UTF-8 pour écrire des caractères chinois, MySQL confondra ces caractères avec des caractères du jeu de caractères Latin2, ce qui entraînera une confusion dans le codage des caractères, appelé "code tronqué".

2. Solution aux caractères chinois tronqués de MySQL

  1. Modifier le jeu de caractères de MySQL

Lors de l'installation de MySQL, nous pouvons choisir d'installer différents jeux de caractères, tels que UTF-8, GBK, gb2312, etc.

Si nous avons installé MySQL, nous pouvons spécifier le jeu de caractères en modifiant le fichier de configuration (my.cnf). Ouvrez my.cnf et ajoutez le code suivant :

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
character-set-server=utf8mb4

collation-server=utf8mb4_unicode_ci

skip-character-set-client-handshake

Remarque : ce qui précède est la configuration d'UTF-8. Si vous utilisez GBK ou GB2312, remplacez-le directement par le jeu de caractères correspondant.

Remarque : Une fois la modification terminée, le service MySQL doit être redémarré pour prendre effet.

  1. Modifier le jeu de caractères via la ligne de commande

Nous pouvons également modifier le jeu de caractères de MySQL via la ligne de commande. Après vous être connecté à la ligne de commande MySQL, entrez la commande suivante :

Définissez le jeu de caractères de la base de données sur utf8mb4

ALTER DATABASE yourdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Définissez le jeu de caractères de la table sur utf8mb4

ALTER TABLE yourtable CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Définissez le jeu de caractères de champ dans la table sur utf8mb4

ALTER TABLE yourtable MODIFY COLUMN yourcolumn VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

  1. Editeur définissant le jeu de caractères

Pendant le processus de développement, Nous pouvons spécifier le jeu de caractères via les paramètres de l'éditeur. Si vous utilisez l'éditeur Sublime Text, cliquez sur Préférences -> Paramètres et ajoutez le code suivant :

"default_encoding": "utf8"

Cela garantira que lors de l'écriture du code, l'encodage est spécifié en UTF-8 pour éviter le chinois. caractères. Problème de code tronqué.

  1. Spécifiez le jeu de caractères dans l'application

Dans les applications Web, nous devons spécifier manuellement le jeu de caractères dans le code pour garantir la cohérence avec le jeu de caractères dans la base de données MySQL.

Exemple de code PHP :

//Définissez le format d'encodage sur UTF-8
header("Content-type:text/html;charset=utf-8");

// Connectez-vous à MySQL
$conn=mysqli_connect (" localhost","username","password","dbname");

//Définissez le jeu de caractères de connexion MySQL sur UTF-8
mysqli_query($conn,"set names utf8mb4");

  1. Utiliser la base de données pool de connexions

Le pool de connexions dans MySQL peut améliorer l'efficacité des connexions à la base de données et définir le jeu de caractères de la connexion.

Exemple de code Java :

// Créer un pool de connexions
DataSource ds = DruidDataSourceFactory.createDataSource(properties);

// Obtenir la connexion
Connection conn = ds.getConnection();

// Définir le caractère de connexion set
conn .createStatement().execute("set names utf8mb4");

  1. Spécifiez le jeu de caractères lors de l'importation de données

Dans le processus d'importation de données, nous devons spécifier le jeu de caractères si vous utilisez MySQL. ligne de commande pour importer des données, exécutez la commande suivante :

Spécifiez l'encodage en UTF-8 lors de l'importation de données

mysql -h yourhost -u youruser -p --default-character-set=utf8mb4 yourdb <

Convertir le jeu de caractères chinois
  1. Si des données tronquées existent déjà dans la base de données MySQL, elles peuvent être converties à l'aide de la commande suivante :

Convertir le jeu de caractères dans la base de données

ALTER DATABASE yourdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci

Convertissez le jeu de caractères dans la table

ALTER TABLE votre table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Convertissez le jeu de caractères du champ

ALTER TABLE votre table MODIFY COLUMN votre colonne VARCHAR(255) CHAR SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Le ci-dessus est la solution au problème tronqué du chinois MySQL. En définissant correctement le jeu de caractères de MySQL, en garantissant que le jeu de caractères entre l'application et la base de données MySQL est cohérent et en spécifiant le jeu de caractères lors de l'importation et de la conversion des données, nous pouvons résoudre efficacement le problème du chinois tronqué de MySQL. Dans le même temps, choisissez une méthode appropriée en fonction de la situation réelle pour garantir l'exactitude et la lisibilité des données.

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