【发布时间】:2017-03-12 16:02:49
【问题描述】:
我正在编写一个 php 脚本,使用 phantomjs 在网站上执行 javascript,然后将其内容返回到 php 脚本。我的问题是返回的输出显然不是 UTF-8。我试过setlocale,iconv 甚至utf8_encode 都没有工作。以下是代码:
inspectOffer.php
<?php
$url=$argv[1];
$locale='cs_CZ.UTF-8';
setlocale(LC_ALL,$locale);
putenv('LC_ALL='.$locale);
$phantom_script= dirname(__FILE__). '/inspectOffer.js';
$response = exec ('phantomjs ' . $phantom_script. ' '.$url,$out);
foreach ($out as $index =>$value){
$output.=$value;
}
$output=iconv(mb_detect_encoding($output, mb_detect_order(), true), "UTF-8", $output);
$output=utf8_encode($output);
var_dump($output);
inspectOffer.js
var webPage = require('webpage');
var page = webPage.create();
var system = require('system');
var args = system.args;
var url=args[1];
page.open(url, function(status) {
console.log(page.content);
phantom.exit();
});
页面上有这样的东西:
V blízkosti Rezidence se nachází veškerá občanská vybavenost.
在输出中看起来像这样:
V bl├şzkosti Rezidence se nach├íz├ş ve┼íker├í ob─Źansk├í vybavenost.
在 windows 10 中从 cmd 执行脚本:
php inspectOffer.php https://www.sreality.cz/detail/prodej/byt/2+kk/karlovy-vary-dvory-/398053724
【问题讨论】:
标签: javascript php utf-8 phantomjs