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.
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.
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.