0

我正在尝试卷曲此页面并将结果放入 HTML 页面。我使用了这段代码:

        $url= "https://web.archive.org/web/20160202021236/http://www.mpshopfashion.com";
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_TIMEOUT, 30); //timeout in seconds
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // follow 301 redirection

        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0');
        $html = curl_exec($ch);

当我用浏览器打开它时,创建的 HTML 页面看起来是正确的,但是当我尝试用编辑器打开这个页面时,我看到这样的文本:

à¤Ã×èͧ»ÃдѺῪÑè¹ à¤Ã×èͧ»ÃдѺῪÑè¹à¡ÒËÅÕ ÊÃéÍÂ¤Í ÊÃéÍ¢éÍÁ×Í µèÒ§ËÙ ¢Ò»ÅÕ¡-¢ÒÂÊè§

而不是这个

เครื่องประดับแฟชั่น เครื่องประดับแฟชั่นเกาหลี สร้อยคอ สร้อยข้อมือ ต่างหู ขายปลีก-ขายส่ง
4

2 回答 2

1

网站通常在 HTTP 标头中声明其编码。请注意Content-TypeFirefox 开发者工具的截图:

火狐开发者工具

TIS-620显然是泰国使用的一种常见的传统编码(当然,UTF-8 已经淘汰了所有其他编码)。

你的编辑器应该有一个设置来选择编码,以及访问适当的字体,当然,支持那个特定的编码。这是来自 RJ TextEd 的截图:

RJ 文本编辑

作为后备选项(毕竟,HTTP 标头不存在于 HTTP 之外)HTML 提供<meta>标记作为识别编码的替代方法:

<meta http-equiv="Content-Type" content="text/html; charset=windows-874"/>

在这种情况下,我们可以看到它甚至不匹配 HTTP 标头。

再一次,这取决于您使用的未公开的特定编辑器是否编写逻辑并实施元标记检查以识别编码。根本没有万能的万能解决方案可以在所有编辑器中自动运行。

于 2017-06-19T09:59:46.403 回答
0

这可能与网站甚至 curl 请求中的错误编码设置有关。为 curl 使用一些包装器怎么样,这真的很难以正确的方式设置。

我可以为此推荐使用 Guzzle。

https://github.com/guzzle/guzzle

于 2017-06-19T09:10:52.530 回答