file_get_contents() 扭曲 UTF-8 字符:解决方案
当使用 UTF-8 编码从外部源加载 HTML 时,file_get_contents()可能会损坏字符,导致特殊字符的错误表示。要解决此问题:
检查编码设置:
确保远程服务器以正确的 UTF-8 编码提供 HTML。检查 Content-Type 标头以确认服务器声明的编码。
将编码应用于本机 PHP 函数:
在某些情况下,手动指定 PHP 中的编码功能可以解决问题。使用 mb_detect_encoding() 函数识别返回内容的编码,然后使用 mb_convert_encoding() 或 iconv() 将其转换为所需的编码(例如 UTF-8)。
$html = mb_convert_encoding($html, 'UTF-8', mb_detect_encoding($html, 'UTF-8', true));
考虑 HTML 实体:
如果字符仍然扭曲,考虑将它们转换为 HTML 实体。这可以使用 htmlentities() 来完成。
$html = htmlentities($html, ENT_QUOTES, 'UTF-8');
示例:
以下示例演示如何使用 UTF-8 字符加载 HTML 并将其转换为 HTML实体:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Test</title> </head> <body> <?php $html = file_get_contents('http://example.com'); echo htmlentities($html); ?> </body> </html>
以上是为什么 `file_get_contents()` 会乱码 UTF-8 字符,如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!