2

我刚刚遇到用 UTF-8 编码的 HTML 文档在loadHTML().

Stack上有很多这样的QnA:

但是,据我了解,大多数答案都假设源编码UTF-8。所以推荐这样使用mb_convert_encoding()函数:

$dom->loadHTML(mb_convert_encoding($document_in_utf_8, 'HTML-ENTITIES', 'UTF-8'));

我想这只有在源文档UTF-8 时才有效。不幸的是,在我的世界里,源文档可以有任何可用的编码:Windows-1251、UTF-8、KOI8-R 等等......

那么对于任何编码处理这个问题的最佳实践是什么?

更新1:只需找到mb_detect_encoding()功能。使用一个来检测编码是一种好习惯吗?以这样的方式:

$encoding = mb_detect_encoding($doc);
$doc = mb_convert_encoding($doc, 'HTML-ENTITIES', $encoding);
$dom->loadHTML($doc);

在几个文件上对此进行了测试:看起来它有效,但我可以确定这适用于所有合理的情况吗?

4

0 回答 0