【问题标题】:Unicode is getting Encoded CURL PHPUnicode 正在编码 CURL PHP
【发布时间】:2020-08-15 13:56:53
【问题描述】:

    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)。 有什么办法让它工作吗?

【问题讨论】:

标签: php web-scraping unicode php-curl


【解决方案1】:

首先你要识别源网站的字符编码。

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

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

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

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

如果你没有成功,你可以使用file通过检查文件内容来尝试“猜测”字符编码:

$ file -I page.html

输出如下:

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

第二你必须决定或理解destination字符集是什么:

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

  • 您是否在 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 也可用于相同目的。

【讨论】:

    猜你喜欢
    • 2017-09-12
    • 2013-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 2013-09-22
    • 1970-01-01
    相关资源
    最近更新 更多