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
Libérer: 2024-12-09 22:42:13
original
502 Les gens l'ont consulté

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

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

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

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

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