Maison >développement back-end >tutoriel php >Pourquoi les caractères UTF-8 sont-ils corrompus lors de l'utilisation de `file_get_contents()` ?

Pourquoi les caractères UTF-8 sont-ils corrompus lors de l'utilisation de `file_get_contents()` ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-09 22:42:13414parcourir

Why are UTF-8 Characters Corrupted When Using `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!

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