几周前,我分享了我如何使用 PHP DOMDocument 可靠地将所有图像 URL 从标准 HTTP 更新为 HTTPS。 DOMDocument 让一个难题看起来非常简单……但有一个副作用是我花了一段时间才发现:UTF-8 字符正在变异为另一组字符。 我在每篇博文中都看到了一堆奇怪的字符,比如“ãç³”和“»ã®é”。
我知道问题是在 DOMDocument 解析期间发生的,我需要快速找到解决方法。 解决方案只是一小段代码:
// Create a DOMDocument instance
$doc = new DOMDocument();
// The fix: mb_convert_encoding conversion
$doc->loadHTML(mb_convert_encoding($content, 'HTML-ENTITIES', 'UTF-8'));
设置字符集后 mb_convert_encoding
,奇怪的字符消失了,所需的字符又回到了原位。 呸!