几周前,我分享了我如何使用 PHP DOMDocument 可靠地将所有图像网址从标准 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
设置字符集后,奇数字符消失,想要的角色回到原位。呸!