Phantomjs: Phantomjs não podem mostrar - ou algumas outras palavras UTF-8.

Criado em 16 mar. 2014  ·  3Comentários  ·  Fonte: ariya/phantomjs

Eu escrevo um url2src.js para converter um arquivo html em outro arquivo html em que todos os javascripts são processados.
Descobri que, se houver algumas palavras UTF-8 (como -), o resultado não está correto.

Eu uso a versão chinesa do Windows 8.1. e execute este comando no Windows cmd:

d:\epub\components>phantomjs  --output-encoding=utf8 --script-encoding=utf8 url2src.js activities2.html activities2-processed.html
d:\epub\components>phantomjs --version
1.9.7

O conteúdo do url2src.js é:

var page = require('webpage').create(),
    system = require('system'),
    t, address, output;

if (system.args.length !== 3) {
    console.log('Usage: url2src.js <some URL> <output File path>');
    phantom.exit();
}

t = Date.now();
address = system.args[1];
output = system.args[2];
page.open(address, function (status) {
    if (status !== 'success') {
        console.log('FAIL to load the address : ' + address);
    } else {
        t = Date.now() - t;
        //console.log('Loading time ' + t + ' ms');
        var js = page.evaluate(function () {
            return document;
        });
        //console.log(js.all[0].outerHTML); 
        var fs = require('fs');
        try {
            fs.write(output, js.all[0].outerHTML, 'w');
        } catch(e) {
            console.log(e);
        }
    }
    phantom.exit();
});

Mais informações detalhadas estão no anexo aqui:
https://groups.google.com/forum/#!topic/phantomjs/oqvK8mkk6aY

Qualquer ajuda é apreciada.

Comentários muito úteis

Eu sei o motivo agora, porque o documento html de entrada foi tratado como ISO-8859-1 como padrão.
Adicionar meta para definir charset = utf-8 pode resolver este problema.

<html>
<head>
 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
 </head>
 <body>
    <p> The user interface for an activity is provided by a hierarchy of views—objects derived from the <code>View</code> class. </p> 
 </body>
</html>

Todos 3 comentários

Eu sei o motivo agora, porque o documento html de entrada foi tratado como ISO-8859-1 como padrão.
Adicionar meta para definir charset = utf-8 pode resolver este problema.

<html>
<head>
 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
 </head>
 <body>
    <p> The user interface for an activity is provided by a hierarchy of views—objects derived from the <code>View</code> class. </p> 
 </body>
</html>

Você tem razão.No entanto, não posso mudar o html que outras pessoas me passam.Como fazer?

Eu tenho alguns documentos que não têm nenhuma informação de cabeçalho (estou obtendo-os de aplicativos de terceiros) ... uma forma de forçar a codificação seria bom.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

qaDream77 picture qaDream77  ·  4Comentários

Sayalic0 picture Sayalic0  ·  5Comentários

maboiteaspam picture maboiteaspam  ·  3Comentários

Marmeladenbrot picture Marmeladenbrot  ·  4Comentários

yairza picture yairza  ·  6Comentários