Dizque



Desarrollo web, JavaScript

Dojo compressor y los caracteres internacionales

Saltar a Anotaciones relacionadas

Llevo un par de meses usando ShrinkSafe, el sistema de compresión de Dojo, con gran satisfacción.

Pero… se le da ligeramente mal la manipulación de caracteres fuera del rango ASCII. Por una parte los escapa. Por otra –con mi configuración, no sé si todo el mundo sufrirá esta hemorroide– los escapa mal. Esto es:

// entrada
var chars = "áéíóú";
// salida incorrecta, pinta "áéíóú"
var chars = "\u221a\xb0\u221a\xa9\u221a\u2260\u221a\u2265\u221a\u222b";

Después de dar unas cuantas vueltas, he encontrado la solución –o al menos con una solución que me vale; escapa los caracteres, pero los escapa bien–: pasar al intérprete de java una opción extra. Así, donde la documentación sugiere:

java -jar custom_rhino.jar -c infile.js > outfile.js 2>&1

Choan usa:

java -Dfile.encoding=UTF-8 -jar custom_rhino.jar -c infile.js > outfile.js

El resultado:

// entrada
var chars = "áéíóú";
// salida correcta, pinta "áéíóú"
var chars = "\xe1\xe9\xed\xf3\xfa";

No uso la redirección de errores. Si algo grave pasa, quiero gritos y alarmas.

Si alguien ha encontrado la manera de evitar que el compresor escape los caracteres no ASCII… por favor, que nos diga cómo.




Di la tuya

Puedes usar markdown y estas etiquetas HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong> . Por favor, evita el abuso de las mayúsculas y cuida la ortografía.