首页 >后端开发 >php教程 >为什么使用'file_get_contents()”时 UTF-8 字符会损坏?

为什么使用'file_get_contents()”时 UTF-8 字符会损坏?

Susan Sarandon
Susan Sarandon原创
2024-12-09 22:42:13414浏览

Why are UTF-8 Characters Corrupted When Using `file_get_contents()`?

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn