【问题标题】:UTF8 with file_get_contents()带有 file_get_contents() 的 UTF8
【发布时间】:2014-12-08 18:52:44
【问题描述】:

我正在使用 file_get_contents() 来获取 HTML 并从网站上抓取一些数据。 源代码并不总是 UTF8,但我正在使用 FORCEUTF8 类来修复它。但它不能正常工作。我做错了什么?

/* Load UTF8 HTML */
require_once('/ForceUTF8/Encoding.php');
use \ForceUTF8\Encoding;
function loadHTMLInUtf8($url){
$utf8_or_latin1_or_mixed_string=file_get_contents($url);
return Encoding::toUTF8($utf8_or_latin1_or_mixed_string);
}    

$html=loadHTMLInUtf8('http://www.example.com/');
$dom->loadHTML('<meta http-equiv="content-type" content="text/html; charset=utf-8">'.$html);

有没有其他方法可以做到这一点?

【问题讨论】:

标签: php utf-8 file-get-contents


【解决方案1】:

您可以使用“utf8_encode”方法。应该和上面写的方法一样。

【讨论】:

  • 非常感谢您的回答,但是这个和上面的答案到底有什么区别?
  • @Alberich 这是第一个。
  • 非常感谢,解决方法如下。享受你的一天,感谢您的帮助:)
【解决方案2】:

file_get_contents 会破坏 UTF8 编码。

试试这样的:

<?php
function file_get_contents_utf8($fn) {
    $content = file_get_contents($fn);
    return mb_convert_encoding($content, 'UTF-8',
        mb_detect_encoding($content, 'UTF-8, ISO-8859-1', true));
}
?>

如果这不起作用,您能否提供一个示例 URL,这不起作用? (我检查了 FORCEUTF8 库的源代码,这看起来效率不高,我猜这个小函数可以做同样的事情(它是 PHP 代码中的原生函数)。

【讨论】:

  • 非常感谢您的完整回答。但它现在不工作,用这个例子:zoomnews.es/468680/al-dente/…
  • 它一直保存这样的标题:“El 'pequeño Nicolá¡s' q...” :)
  • @Alberich 这对我来说很好,一定要清理你的浏览器缓存或使用“隐身”模式。
  • 好的,$dom 是哪个 DOM HTML 解析器?因为这可能是问题所在(如果我只是回显..._utf8 函数的数据,则字节是正确的)。
  • 非常感谢,太完美了:)祝你有美好的一天:)
猜你喜欢
  • 2011-06-22
  • 2018-09-17
  • 2015-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多