使用curl php编译泰语语言错误

时间:2017-06-19 08:57:48

标签: php encoding thai

我正在尝试卷曲此页面并将结果放在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页面看起来是正确的但是当我尝试用编辑器打开这个页面时,我看到这样的文字:

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

而不是这个

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

2 个答案:

答案 0 :(得分:1)

网站通常在HTTP标头中声明其编码。请注意Firefox Developer Tools的此屏幕截图中的Content-Type

Firefox Developer Tools

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

您的编辑器应该有一个设置来选择编码,以及访问相应的字体,并确保支持该特定编码。这是RJ TextEd的截图:

RJ TextEd

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

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

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

再一次,由您使用的未公开的特定编辑器是否编写逻辑并实现元标记检查以识别编码。根本没有通用的“一刀切”解决方案,可以在所有编辑器中自动运行。

答案 1 :(得分:0)

可能是关于网站上的错误编码设置,甚至是卷曲请求。怎么样使用一些curl包装器,这很难以正确的方式设置。

我可以推荐使用Guzzle。

https://github.com/guzzle/guzzle