Maison > développement back-end > tutoriel php > Pourquoi le chargement HTML de PHP DOMDocument échoue-t-il avec l'encodage UTF-8 et comment puis-je y remédier ?

Pourquoi le chargement HTML de PHP DOMDocument échoue-t-il avec l'encodage UTF-8 et comment puis-je y remédier ?

Barbara Streisand
Libérer: 2024-12-30 16:48:09
original
897 Les gens l'ont consulté

Why Does PHP DOMDocument's loadHTML Fail with UTF-8 Encoding, and How Can I Fix It?

PHP DOMDocument loadHTML ne peut pas encoder correctement UTF-8

La méthode loadHTML de DOMDocument suppose que votre entrée est codée en ISO-8859-1, ce qui peut entraîner un codage incorrect des caractères UTF-8.

Le L'analyseur sous-jacent utilisé par DOMDocument attend une entrée HTML4, ce qui peut entraîner des problèmes avec les documents HTML5.

Solution :

Pour résoudre ce problème, spécifiez l'encodage des caractères de votre code HTML à l'aide d'un des méthodes suivantes :

Encodage XML Déclaration :

En-tête ContentType :

Préfixe d'encodage XML :

Solution de contournement pour le contenu HTML inconnu :

Si vous ne pouvez pas faire d'hypothèses sur le encodage, utilisez une solution de contournement comme SmartDOMDocument ou le code PHP suivant :

$profile = '<p>イリノイ州シカゴにて、アイルランド系の家庭に、9</p>';
$dom = new DOMDocument();
$dom->loadHTML(mb_convert_encoding($profile, 'HTML-ENTITIES', 'UTF-8'));
echo $dom->saveHTML();
Copier après la connexion

Attention pour PHP 8.2 :

En PHP 8.2, la fonction mb_convert_encoding générera une dépréciation avertissement. Comme alternative :

$dom->loadHTML(mb_encode_numericentity($profile, [0x80, 0x10FFFF, 0, ~0], 'UTF-8'));
Copier après la connexion

Bien qu'elle ne soit pas idéale, cette méthode garantit un encodage sûr car tous les caractères peuvent être représentés en ISO-8859-1.

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