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 ?

Pourquoi `file_get_contents()` altère-t-il les caractères UTF-8 et comment puis-je y remédier ?

DDD
DDDoriginal
2024-12-09 14:34:13385parcourir

Why Does `file_get_contents()` Garble UTF-8 Characters, and How Can I Fix It?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn