Phantomjs: Phantomjs no se puede mostrar, o algunas otras palabras UTF-8.

Creado en 16 mar. 2014  ·  3Comentarios  ·  Fuente: ariya/phantomjs

Escribo un url2src.js para convertir un archivo html en otro archivo html en el que se procesan todos los javascripts.
Descubrí que si hay algunas palabras UTF-8 (como -), el resultado no es correcto.

Utilizo la versión china de Windows 8.1. y ejecute este comando en 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

El contenido de url2src.js es:

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();
});

Más información detallada se encuentra en el archivo adjunto aquí:
https://groups.google.com/forum/#!topic/phantomjs/oqvK8mkk6aY

Se agradece cualquier ayuda.

Comentario más útil

Ahora sé la razón, porque el documento html de entrada se trató como ISO-8859-1 por defecto.
Agregar meta para establecer charset = utf-8 puede 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 comentarios

Ahora sé la razón, porque el documento html de entrada se trató como ISO-8859-1 por defecto.
Agregar meta para establecer charset = utf-8 puede 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>

Tienes razón, sin embargo, no puedo cambiar el html que me dan otras personas, ¿cómo hacerlo?

Tengo algunos documentos que no tienen información de encabezado (los obtengo de aplicaciones de terceros) ... una forma de forzar la codificación estaría bien.

¿Fue útil esta página
0 / 5 - 0 calificaciones