PhantomJS将字符变成坏数据

时间:2017-04-20 22:08:48

标签: javascript utf-8 character-encoding phantomjs

我在phantomjs中运行了一个js文件

var settings = {mode: 'w', charset: 'UTF-8'};
page.open(path, settings, function (status) {
    if (status !== "success") {
        console.log("Unable to access network");
    } else {
        page.evaluate(function() {
            window.console.log = function(msg) { alert(msg) }; 
            var $p = document.querySelectorAll('.my-class')[0];
            var html = $p.innerHTML;
            return html;
        });
    }
});

数据看起来像

<div class="my-class">Power, speed, style —&nbsp;James Bond’s 10&nbsp;greatest drives</div>

但是phantomJS返回的html是

Power, speed, style ΓÇö James BondΓÇÖs 10 greatest drives

我的页面有

<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

在头部。

3 个答案:

答案 0 :(得分:0)

尝试encoding参数。如果UTF8无法正常工作,请尝试UTF-8

var settings = {mode: 'w', charset: 'UTF-8', encoding: 'UTF8'};

答案 1 :(得分:0)

&是phantomJS中的运算符吗?

排队:

style —&nbsp;James Bond’s 10&nbsp;greatest
   style ΓÇö James BondΓÇÖs 10 greatest

我建议&#34; emdash&#34; ()和引用()是恶棍,而不是&nbsp;。 nbsp =不间断空格,可以作为空格查看,但可以防止换行。

结论:幻像中没有正确识别UTF-8字符。

ΓÇÖ是十六进制CE93C387C396(假设utf8编码),但该十六进制不会映射到任何可识别的内容。 (我追求这条路径,因为一个常见的问题是编码被误解,导致错误。)另外,由于ΓÇÖ是希腊语和拉丁语的混合,因此无法在单个字符集中正确解释UTF-8。

&#34;数据&#34;来自?也许在 phantomJS之前发生了

答案 2 :(得分:0)

字符集:“ UTF-8”设置很好,但是您需要像这样在HTML代码中设置properties.sql.store.url 标签:

<meta/>