Maison >développement back-end >tutoriel php >Pourquoi `file_get_contents()` altère-t-il les caractères UTF-8 et comment puis-je y remédier ?
file_get_contents() déforme les caractères UTF-8 : une résolution
Lors du chargement de HTML à partir de sources externes avec encodage UTF-8, file_get_contents() peut corrompre les caractères, entraînant une représentation incorrecte de特殊字符. Pour résoudre ce problème :
Examinez les paramètres d'encodage :
Assurez-vous que le serveur distant diffuse le HTML dans le bon encodage UTF-8. Vérifiez l'en-tête Content-Type pour confirmer l'encodage déclaré par le serveur.
Appliquer l'encodage aux fonctions PHP natives :
Dans certains cas, spécifier manuellement l'encodage en PHP les fonctions peuvent résoudre le problème. Utilisez la fonction mb_detect_encoding() pour identifier l'encodage du contenu renvoyé, puis utilisez mb_convert_encoding() ou iconv() pour le convertir à l'encodage souhaité (par exemple, UTF-8).
$html = mb_convert_encoding($html, 'UTF-8', mb_detect_encoding($html, 'UTF-8', true));
Considérez les entités HTML :
Si les caractères sont toujours déformés, envisagez de les convertir en HTML entités. Cela peut être fait en utilisant htmlentities().
$html = htmlentities($html, ENT_QUOTES, 'UTF-8');
Exemple :
L'exemple suivant montre comment charger du HTML avec des caractères UTF-8 et les convertir en HTML. entités :
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Test</title> </head> <body> <?php $html = file_get_contents('http://example.com'); echo htmlentities($html); ?> </body> </html>
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!