Pendant le développement de PHP, lorsque les données brouillées se produisent dans la base de données se produisent, elles sont généralement liées à des paramètres de codage de caractères incohérents. En particulier dans les environnements chinois, un problème commun est que la base de données utilise le codage UTF-8, mais il affiche brouillé lors de la sortie. Cet article se concentrera sur la façon d'utiliser la fonction UTF8_DECODE dans PHP pour résoudre le problème du code brouillé dans la sortie de la base de données.
La cause profonde du code brouillé est généralement un décalage dans le codage des caractères. Par exemple:
Les bases de données stockent les données dans le codage UTF-8
La page ou le script ne définit pas le codage correctement, et d'autres encodages sont utilisés par défaut (comme ISO-8859-1)
Aucune conversion de codage correcte n'a été effectuée lors de la lecture des données
La solution idéale est:
Assurez-vous que le codage des caractères est correct lors de la connexion de la base de données (comme UTF-8)
La déclaration de page utilise le codage UTF-8 ( <meta charset = "utf-8"> )
Format de codage codant lors de la lecture et de la sortie
Cependant, dans certains environnements, si les données sont déjà encodantes UTF-8 mais que la page utilise le codage non UTF-8, vous pouvez utiliser la fonction UTF8_DECODE pour convertir la chaîne UTF-8 en codage ISO-8859-1, ce qui peut éviter le code brouillé.
La fonction de la fonction utf8_decode est de convertir les chaînes codées UTF-8 en chaînes codées ISO-8859-1. Sa définition est:
string utf8_decode(string $data);
Notez que UTF8_DECODE ne peut convertir des caractères que dans la plage de codage ISO-8859-1, et l'excès sera converti en un point d'interrogation ?.
En supposant que votre contenu de base de données est un codage UTF-8, mais la page Web utilise le codage ISO-8859-1 (ou d'autres codages sont compatibles avec ISO-8859-1), vous pouvez utiliser UTF8_DECODE pour traiter la sortie.
<?php
// Connexion de base de données
$mysqli = new mysqli("gitbox.net", "username", "password", "database");
// Définissez le codage des caractères de connexion surutf8
$mysqli->set_charset("utf8");
// Données de requête
$result = $mysqli->query("SELECT content FROM articles WHERE id=1");
if ($row = $result->fetch_assoc()) {
// Assumer l'utilisation de la page WebISO-8859-1codage,Besoin d'êtreUTF-8Se convertirISO-8859-1
$content = utf8_decode($row['content']);
echo $content;
} else {
echo "Données introuvables";
}
$mysqli->close();
?>
Dans le code ci-dessus:
Assurez-vous que les données lues dans la base de données sont au format UTF-8 via $ mysqli-> set_charset ("utf8")
Convertir le codage UTF-8 en ISO- 8859-1
Les données de sortie ne seront pas brouillées lorsque la page est codée à l'aide d'ISO-8859-1.
Si la page Web elle-même utilise le codage UTF-8 (la plupart des pages Web sont maintenant comme ceci), vous n'avez généralement pas besoin d'utiliser UTF8_DECODE , ce qui entraînera un brouillage des caractères chinois.
Essayez de garder la base de données, les scripts PHP et le codage de la page Web Unified dans UTF-8 pour réduire la complexité de la conversion de codage.
UTF8_DECODE n'est utilisé que s'il doit être compatible avec l'environnement de codage ISO-8859-1.
La fonction UTF8_DECODE est un outil simple pour gérer le codage UTF-8 à ISO-8859-1, et peut résoudre le problème du code brouillé dans un environnement spécifique. Cependant, le développement moderne recommande d'utiliser UTF-8 en codant uniformément pour éviter les exceptions de données causées par plusieurs conversions. Si vous rencontrez toujours des problèmes de code brouillé, il est recommandé de dépanner à la fois le codage de la connexion de la base de données et l'encodage de la page Web.