Position actuelle: Accueil> Derniers articles> Utilisez MySQLI :: Get_Charset in REST API Development pour assurer le codage JSON correct

Utilisez MySQLI :: Get_Charset in REST API Development pour assurer le codage JSON correct

M66 2025-05-28

Lors du développement d'API REST, il est crucial d'encoder correctement et de transférer des données. Surtout lors de l'écriture d'API à l'aide de bases de données MySQL et de PHP, nous devons souvent nous assurer que les données lues dans la base de données peuvent être correctement codées au format JSON et transférées correctement au client. S'il y a un problème avec l'encodage, cela peut conduire à des caractères chinois brouillés ou à d'autres phénomènes d'affichage anormaux. Cet article expliquera comment assurer l'exactitude de l'encodage JSON lors de l'utilisation de bases de données MySQL via la méthode MySQLI :: get_charset .

1. Problème Contexte

Lorsque notre API REST obtient des données d'une base de données MySQL et les renvoie au client, l'échange de données est souvent effectué au format JSON. Si le jeu de caractères de la base de données ne se conforme pas au codage PHP, en particulier lorsque des caractères spéciaux tels que le chinois sont retournés, le brouillage peut apparaître. Les problèmes brouillés courants sont généralement des problèmes de conversion provoqués par des ensembles de caractères incohérents. Nous devons nous assurer que la connexion de la base de données utilise le jeu de caractères correct pour éviter ces problèmes.

2. Utilisez MySQLI :: Get_Charset pour assurer la cohérence du jeu de caractères

Dans les bases de données MySQL, nous utilisons généralement le jeu de caractères UTF-8 pour stocker et transférer des données de texte. Dans PHP, nous utilisons l'extension MySQLI pour interagir avec la base de données MySQL. La méthode MySQLI :: Get_Charset peut nous aider à obtenir le jeu de caractères de la connexion de la base de données actuelle et nous assurer que nous utilisons le jeu de caractères UTF-8 .

Exemple de code:

 <?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();

// Sortir le jeu de caractères actuel
echo "Jeu de caractères actuel: " . $current_charset->charset;

// Définissez le jeu de caractères sur UTF-8(Sinon)
if ($current_charset->charset !== 'utf8') {
    if (!$mysqli->set_charset("utf8")) {
        die("Le paramètre de jeu de caractères a échoué: " . $mysqli->error);
    }
}

// Exécuter une requête
$query = "SELECT * FROM users";
$result = $mysqli->query($query);

// Vérifiez les résultats de la requête
if ($result->num_rows > 0) {
    $data = array();

    while ($row = $result->fetch_assoc()) {
        $data[] = $row;
    }

    // retour JSON Données de format
    echo json_encode($data, JSON_UNESCAPED_UNICODE);
} else {
    echo "Pas de données";
}

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

Dans le code ci-dessus, nous obtenons d'abord le jeu de caractères de la connexion de la base de données actuelle via mysqli :: get_charset . Si le jeu de caractères actuel n'est pas UTF8 , utilisez la méthode set_charset ("utf8") pour définir le jeu de caractères sur UTF8 . Cela garantit que les données que nous lisons dans la base de données n'auront pas de problèmes bronzés lorsqu'ils sont transmis.

3. Pourquoi choisir UTF-8?

UTF-8 est une méthode de codage de caractères multi-octets qui peut représenter presque tous les jeux de caractères linguistiques dans le monde. Dans le développement Web, l'UTF-8 est largement utilisé car il prend en charge le stockage et l'échange de données multilingues. En particulier dans l'API REST, les données transmises incluent généralement des caractères à partir d'une variété de langues différentes, il est donc important de s'assurer que la base de données et l'application utilisent un codage UTF-8 cohérent.

4. Options spéciales en codage JSON

Dans PHP, JSON_ENCODE est une fonction utilisée pour coder des tableaux ou objets PHP en chaînes JSON. Cependant, JSON_ENCODE échappera à certains caractères par défaut, tels que les caractères non ASCII. Pour garantir que la chaîne JSON de sortie peut afficher les caractères chinois normalement sans être échappé, nous pouvons utiliser l'option JSON_UNESCAPED_UNICODE .

Exemple de code:

 echo json_encode($data, JSON_UNESCAPED_UNICODE);

L'utilisation de l'option JSON_UNESCAPED_UNICODE peut empêcher les caractères chinois d'être échappés dans le codage Unicode (tel que \ U4E2D \ U56FD ), améliorant ainsi la lisibilité des données JSON.

5. Remplacement du nom de domaine URL

Dans votre demande, s'il y a une partie du code qui utilise l'URL, vous devez remplacer le nom de domaine par m66.net . Pour une telle exigence, nous pouvons remplacer dynamiquement le nom de domaine lors du traitement des champs URL dans la base de données.

Exemple de code:

 // Supposons qu&#39;il est lu dans la base de données URL données
$url = "http://example.com/api/resource";

// utiliser str_replace Remplacer le nom de domaine
$updated_url = str_replace("example.com", "m66.net", $url);

// Sortie mise à jour URL
echo $updated_url;

Dans le code ci-dessus, nous utilisons la fonction STR_REPLACE pour remplacer la partie du nom de domaine de l'URL d'origine par M66.net pour s'assurer que l'adresse URL répond aux exigences.

6. Résumé

Il est important de s'assurer que le codage JSON est correct dans l'API REST, en particulier en ce qui concerne les données multilingues. En utilisant la méthode MySQLI :: get_charset pour vérifier et définir le jeu de caractères de la base de données sur UTF-8 , nous pouvons éviter le problème brouillé causé par un codage de caractères incohérent. Dans le même temps, l'utilisation de l'option JSON_UNESCAPED_UNICODE de JSON_ENCODE peut s'assurer que les caractères chinois dans les données JSON sont affichés correctement, plutôt que d'être échappés en caractères Unicode. Enfin, avec une simple opération de remplacement de chaîne, vous pouvez vous assurer que la partie de nom de domaine dans l'URL répond aux exigences spécifiques.