Unicode 正在获取编码的 CURL PHP

Unicode is getting Encoded CURL PHP


    if ($_GET["link"]!=""){
$curl = curl_init('http://exaple.com'.$link);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');

$page = curl_exec($curl);
echo $page;
}

您好,该网站是其他语言的。字符正在被编码。我正进入(状态 ”??”和奇怪的文本而不是字符“á”"i"“á”等(Unicode)。 有什么办法让它发挥作用吗?

首先你要确定源网站的字符编码。

选择一个页面并下载...使用终端,输入:

$ curl -D headers.txt -o page.html http:/www.example.com/index.html

响应头保存到headers.txt,而页面源html保存到page.html

用文本编辑器检查这两个文件并搜索 Content-Type 您应该至少在其中一个文件中找到字符编码的指示。

如果不成功,您可以使用 file 通过检查文件内容来尝试 "guess" 字符编码:

$ file -I page.html

输出如下所示:

page.html: text/plain; charset=iso-8859-1

其次你必须决定或理解目标字符集是什么:

  • 您是否将网页存储到文本文件中?文件的预期字符编码是什么?

  • 您是否在 PHP 中解析网页以获取您感兴趣的一些数据?

  • 您是否在您的网站上(全部或部分)返回网页?网站的字符编码是什么?

让我们假设(例如)您希望最终得到编码为 UTF-8.

的 Unicode 字符

最后 改进您的 PHP 脚本,以便在使用 $page = curl_exec($curl);

检索页面后进行正确的字符集转换

您可以使用 mb-convert_encoding

$page = mb_convert_encoding( $page, 'ISO-8859-1', 'UTF-8' );
//                      from ----------^            ^--------to

或者 iconv 可用于相同目的。