Position actuelle: Accueil> Derniers articles> Les ordures apparaissent toujours après avoir utilisé MySQLI :: get_charset? Comment résoudre les problèmes?

Les ordures apparaissent toujours après avoir utilisé MySQLI :: get_charset? Comment résoudre les problèmes?

M66 2025-05-18

Lorsque vous utilisez PHP pour interagir avec MySQL pour les bases de données, vous rencontrez souvent des problèmes de codage des caractères, en particulier lors de la sortie des caractères chinois ou d'autres caractères spéciaux. La fonction MySQLI :: Get_Charset elle-même est un jeu de caractères utilisé pour obtenir la connexion de la base de données, mais parfois même si cette fonction est utilisée, le contenu de sortie apparaîtra toujours brouillé. Pourquoi cela se produit-il? Cet article analysera les raisons pertinentes pour vous et fournira des étapes de dépannage courantes.

1. Comprendre le rôle de la fonction MySqli :: get_charset

Dans PHP, MySQLI :: Get_Charset est une fonction très utile qui peut être utilisée pour effectuer le jeu de caractères utilisé par la connexion de la base de données actuelle. Sa valeur de retour est un objet qui contient les informations de jeu de caractères de la connexion actuelle. Par exemple, utilisez le code suivant:

 $mysqli = new mysqli("localhost", "user", "password", "database");

if ($mysqli->connect_error) {
    die("Échec de la connexion: " . $mysqli->connect_error);
}

// Obtenez le jeu de caractères du actuellement connecté
$charset = $mysqli->get_charset();
echo "Le jeu de caractères actuel est: " . $charset->charset;

Ce code sortira les informations de jeu de caractères de la actuellement connectée, qui sera généralement UTF8 ou UTF8MB4 , etc.

Cependant, malgré l'utilisation du jeu de caractères correct pour la connexion de la base de données, nous pouvons encore rencontrer des problèmes brouillés. Ceci est généralement lié à d'autres facteurs et nous effectuerons une enquête détaillée ci-dessous.

2. Problèmes brouillés courants et étapes de dépannage

2.1 Paramètres de set de caractères pour les bases de données et les tables

Même si vous spécifiez le jeu de caractères correct lors de la connexion à MySQL dans PHP, le jeu de caractères de la base de données ou de la table peut ne pas être défini sur le codage correct. À l'heure actuelle, même si le côté PHP envoie le codage de caractère correct, MySQL peut toujours être stocké dans le mauvais codage, ce qui entraîne un code brouillé.

Méthode de dépannage:

  • Utilisez Show Create Database et Show Create Table pour afficher les paramètres du jeu de caractères des bases de données et des tables.

Par exemple:

 SHOW CREATE DATABASE database_name;
SHOW CREATE TABLE table_name;

Si vous constatez que le jeu de caractères n'est pas UTF8 ou UTF8MB4 , vous pouvez le modifier via l'instruction SQL suivante:

 ALTER DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

2.2 Paramètres du jeu de caractères de connexion

Lorsque PHP se connecte à MySQL, bien que le jeu de caractères soit confirmé à l'aide de MySQLI :: Get_Charset , la connexion réelle peut ne pas être définie sur le jeu de caractères correct. Le jeu de caractères peut être explicitement défini à l'aide de la fonction set_charset .

Méthode de dépannage:

  • Après avoir établi une connexion à la base de données, définissez explicitement le jeu de caractères:

 $mysqli->set_charset("utf8mb4");

Ce code force la connexion actuelle pour utiliser le jeu de caractères UTF8MB4 , évitant ainsi le problème de l'encodage incohérent.

Paramètres du jeu de caractères 2.3 de 2,3 Page

En plus des paramètres du jeu de caractères pour les connexions de base de données, le jeu de caractères de sortie de la page doit également être défini correctement. En particulier la sortie de type de contenu de HTML, si elle n'est pas définie correctement, le navigateur peut ne pas être en mesure d'analyser correctement les caractères de la page.

Méthode de dépannage:

  • Dans la page HTML, assurez-vous d'inclure la balise Meta correcte:

 <meta charset="UTF-8">

Cela indiquera au navigateur d'analyser le contenu de la page dans le codage UTF-8, évitant ainsi le code brouillé.

2.4 Encodage de fichiers

Si vous lisez les données d'un fichier et l'insérez-les dans une base de données, le codage du fichier peut être incompatible avec le jeu de caractères de la base de données, ce qui peut également conduire à un code brouillé. Avant d'insérer des données, assurez-vous que le fichier lui-même est codé correctement.

Méthode de dépannage:

 $file_contents = file_get_contents('data.txt');
$encoding = mb_detect_encoding($file_contents, 'UTF-8, ISO-8859-1, GBK');
echo $encoding;

Si le fichier ne codait pas correctement, vous pouvez utiliser la fonction MB_Convert_encoding à convertir:

 $file_contents = mb_convert_encoding($file_contents, 'UTF-8', 'GBK');

2.5 Assurez-vous que le jeu de caractères par défaut de la base de données est cohérent avec l'application

Dans certains cas, même si vous avez défini un jeu de caractères lors de la connexion à la base de données, des problèmes brouillés peuvent se produire si le jeu de caractères par défaut de la base de données est d'autres jeux de caractères tels que Latin1 . La cohérence peut être assurée en définissant le jeu de caractères par défaut pour MySQL.

Méthode de dépannage:

  • Vérifiez les paramètres du jeu de caractères dans les fichiers de configuration MY.cnf ou my.ini et assurez-vous d'utiliser UTF8MB4 ou UTF8 .

Par exemple, ajoutez la configuration suivante:

 [client]
default-character-set = utf8mb4

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

3. Résumé

Même si la fonction MySQLI :: get_charset est utilisée, vous pouvez toujours rencontrer des problèmes brouillés. Ceci est généralement dû à des paramètres de définition de caractères incohérents pour la base de données, la table, la sortie de la page ou les fichiers. Ces problèmes brouillés peuvent être résolus en vérifiant progressivement des facteurs tels que les jeux de caractères de base de données, les jeux de caractères de connexion, les jeux de caractères de sortie de la page et le codage des fichiers.

J'espère que grâce aux étapes de dépannage de cet article, cela peut vous aider à localiser et résoudre rapidement le problème brouillé. Si vous rencontrez d'autres problèmes pendant le processus de dépannage, n'hésitez pas à discuter davantage.