Maison >développement back-end >tutoriel php >Pourquoi les caractères UTF-8 sont-ils corrompus lors de l'utilisation de `file_get_contents()` ?
file_get_contents() interrompt les caractères UTF-8
Le problème survient lors du chargement de HTML à partir d'un serveur externe avec un encodage UTF-8. Les caractères comme ľ, š, č, ť, ž sont corrompus et remplacés par des caractères invalides.
La racine du problème
La fonction file_get_contents() peut rencontrer problèmes d'encodage. Par défaut, il interprète les données au format ASCII, ce qui ne parvient pas à gérer correctement les caractères UTF-8.
Solution proposée
Pour résoudre ce problème, envisagez d'utiliser une méthode d'encodage alternative. .
1. Conversion d'encodage manuelle
Utilisez la fonction mb_convert_encoding() pour convertir le code HTML récupéré en UTF-8 :
$html = file_get_contents('http://example.com/foreign.html'); $utf8_html = mb_convert_encoding($html, 'UTF-8', mb_detect_encoding($html, 'UTF-8', true));
2. Encodage de sortie
Assurez-vous que la sortie est correctement encodée en ajoutant la ligne suivante au script :
header('Content-Type: text/html; charset=UTF-8');
3. Conversion d'entité HTML
Convertissez le HTML récupéré en entités HTML avant de le sortir :
$html = file_get_contents('http://example.com/foreign.html'); $html_entities = htmlentities($html, ENT_COMPAT, 'UTF-8'); echo $html_entities;
4. Décodage JSON
Si le HTML externe est stocké au format JSON, décodez-le à l'aide de la classe JSON :
$json = file_get_contents('http://example.com/foreign.html'); $decoded_json = json_decode($json, true); $html = $decoded_json['html'];
En utilisant ces techniques, vous pouvez contourner les problèmes d'encodage causés par file_get_contents () et assurez-vous du bon affichage des caractères UTF-8.
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!