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
Libérer: 2024-12-09 14:34:13
original
498 Les gens l'ont consulté

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));
Copier après la connexion

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');
Copier après la connexion

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>
Copier après la connexion

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal