解析html时,口音成为php中的审讯标记

时间:2011-07-09 21:13:29

标签: php utf-8 html-parsing

我通过下载html页面自动获取PT-BR文本,当我使用uft8_decode时,acentution成为询问标记,这是我的功能:

function pegaMsg($string)
{
$bot_url = "http://website.com";
//&rnd=&msg="
$rand_msg = rand(0,100);
$url = $bot_url . $rand_msg . "&msg=" . $string;
$url = str_replace(" ", "%20", $url);
//echo "\n" . $url;
$download = http_get($url, $referer="");
$download['FILE'] = utf8_decode($download['FILE']);
$download['FILE'] = str_replace("var resp = ", "", $download['FILE']);
$download['FILE'] = str_replace("\\r\\n", "", $download['FILE']);
$download['FILE'] = str_replace(";", "", $download['FILE']);
$download['FILE'] = str_replace("\'", "", $download['FILE']);

$download['FILE'] = trim($download['FILE']);
return $download['FILE'];
}

这是预期的输出:

  

VOCÊTINHADUAS ESCOLHAS:

这就是我得到的:

  

“VOC? TINHA DUAS ESCOLHAS:

我该怎么办?我希望^显示!感谢和抱歉英语不好

2 个答案:

答案 0 :(得分:0)

utf8_decode替换了无效的代码单元序列?。您收到?的原因很可能是因为您传递给utf8_decode的文字不是以UTF-8开头的。

事实上,它可能已经在ISO-8859-1中,它是utf8_decode返回的字符串的编码。在这种情况下,您的解决方案是忽略对utf8_decode的调用。

如果原始文本既不是UTF-8也不是ISO-8859-1(这是我想要的,因为你正在调用utf8_decode),你必须使用{{3 }或iconv

最后一种可能性是,解释脚本输出的任何内容都假设脚本输出的编码与实际不同,并且它还将无效的代码单元序列转换为?

答案 1 :(得分:0)

尝试使用encode

$download['FILE'] = utf8_encode($download['FILE']);