file_get_contents() 中断 UTF-8 字符
从使用 UTF-8 编码的外部服务器加载 HTML 时会出现此问题。 ľ、š、č、ť、ž 等字符已损坏并替换为无效字符。
问题的根源
file_get_contents() 函数可能会遇到编码问题。默认情况下,它将数据解释为 ASCII,无法正确处理 UTF-8 字符。
建议的解决方案
要解决此问题,请考虑使用替代编码方法.
1.手动编码转换
使用 mb_convert_encoding() 函数将获取的 HTML 转换为 UTF-8:
$html = file_get_contents('http://example.com/foreign.html'); $utf8_html = mb_convert_encoding($html, 'UTF-8', mb_detect_encoding($html, 'UTF-8', true));
2.输出编码
通过将以下行添加到脚本中来确保输出正确编码:
header('Content-Type: text/html; charset=UTF-8');
3. HTML 实体转换
在输出之前将获取的 HTML 转换为 HTML 实体:
$html = file_get_contents('http://example.com/foreign.html'); $html_entities = htmlentities($html, ENT_COMPAT, 'UTF-8'); echo $html_entities;
4. JSON 解码
如果外部 HTML 存储为 JSON,请使用 JSON 类对其进行解码:
$json = file_get_contents('http://example.com/foreign.html'); $decoded_json = json_decode($json, true); $html = $decoded_json['html'];
通过利用这些技术,您可以规避 file_get_contents 引起的编码问题() 并确保 UTF-8 字符的正确显示。
以上是为什么使用'file_get_contents()”时 UTF-8 字符会损坏?的详细内容。更多信息请关注PHP中文网其他相关文章!