Position actuelle: Accueil> Derniers articles> Après avoir utilisé MySQLI :: Get_Charset pour obtenir le jeu de caractères, comment coder correctement et le convertir avec iconv?

Après avoir utilisé MySQLI :: Get_Charset pour obtenir le jeu de caractères, comment coder correctement et le convertir avec iconv?

M66 2025-06-23

La conversion de codage des caractères est une tâche courante lors du développement d'applications Web. Habituellement, lorsque nous devons obtenir des données à partir de la base de données, nous devons assurer l'exactitude du codage des caractères afin que les caractères dans différentes langues puissent être affichés correctement. Cet article présentera comment utiliser MySQLI :: Get_Charset dans PHP pour obtenir le jeu de caractères actuel de la base de données et combiner iconv pour la conversion de codage des caractères.

1. Obtenez le jeu de caractères actuel

Lorsque vous utilisez la base de données MySQL, MySQLI fournit la méthode GET_CHARSET pour obtenir le jeu de caractères de la connexion de la base de données actuelle. Vous pouvez utiliser cette méthode pour comprendre le jeu de caractères utilisé par la connexion actuelle.

 <?php
// Créer une connexion de base de données
$mysqli = new mysqli("localhost", "username", "password", "database");

// Vérifiez si la connexion réussit
if ($mysqli->connect_error) {
    die("Échec de la connexion: " . $mysqli->connect_error);
}

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

// Fermez la connexion de la base de données
$mysqli->close();
?>

2. Utilisez l'icôve pour la conversion de codage des caractères

L'icôve est une fonction très utile en PHP pour convertir entre différents codages de caractères. En supposant que la base de données utilise le codage UTF-8 et que vous devez le convertir en codage ISO-8859-1 pour gérer certaines applications qui ne prennent pas en charge l'encodage UTF-8, iconv peut vous aider à accomplir cette tâche.

Voici un exemple montrant comment obtenir le jeu de caractères d'une base de données en combinaison avec mysqli :: get_charset et utilisez iconv pour la conversion de codage.

 <?php
// Créer une connexion de base de données
$mysqli = new mysqli("localhost", "username", "password", "database");

// Vérifiez si la connexion réussit
if ($mysqli->connect_error) {
    die("Échec de la connexion: " . $mysqli->connect_error);
}

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

// Supposons que les données de la base de données sont UTF-8 codage
$original_string = "Ceci est un test de caractère chinois";

// 如果Jeu de caractères actuel是 UTF-8,Se convertir ISO-8859-1
if ($current_charset === 'utf8') {
    $converted_string = iconv('UTF-8', 'ISO-8859-1', $original_string);
    echo "Chaîne convertie (ISO-8859-1): " . $converted_string;
} else {
    echo "Jeu de caractères actuel不是 UTF-8,Impossible de convertir。";
}

// Fermez la connexion de la base de données
$mysqli->close();
?>

3. Gérer les FAQ dans la conversion du jeu de caractères

  1. Déliaté de caractères : assurez-vous que le codage de la chaîne source est cohérent avec le codage cible, autrement brouillé ou des caractères imprévisibles peut apparaître.

  2. Personnages non pris en charge : Certains personnages peuvent ne pas être représentés dans le codage cible, et ICONV peut perdre ces caractères. Vous pouvez utiliser l'option // translit ou // ignorer pour éviter ceci:

 $converted_string = iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $original_string);
  1. Conversions multiples : si le jeu de caractères est incohérent, il peut être nécessaire d'utiliser iconV pour plusieurs conversions jusqu'à ce que le jeu de caractères cible soit atteint.

4. Scénarios d'application pratiques

Lorsque vous interagissez avec des systèmes externes (tels que m66.net ), vous pouvez rencontrer des ensembles de caractères incohérents. Supposons que vous obteniez des données de m66.net et que vous avez besoin de la convertir au format de jeu de caractères du système actuel, le code suivant montre comment procéder: