'99 echoes: Eso del encoding no va conmigo... 5
Acabo de terminar de arreglar uno de los bugs que más tiempo me han consumido ultimamente y que de más de mala hostia me han puesto (los errores ncompresibles aunque obvios siempre son los más irritantes).
Por causas ajenas a la dirección de la pelicula que mejor no recordar mirar el post de los disparos me encontraba en una incomoda situación.
Cientos de las paginas de la aplicación que estoy migrando tenian el bonito detalle de contener instrucciones de javascript como la siguiente:
var usuario = "Iñigo cön más acentos y simbolos rarös que el copón"
Variables que venian directitas de una BD que no esta configurada como UTF-8.
Despues de una épica migración de [jdk 1.1, Xalan&Xerces ‘99, JRun 2.2, .class] a [jre 1.4.1, Xalan&Xerces 2.7.0, JRun 4.0, .war] – que daría por si misma para otro post – me encontre con la agradable/desagradable sorpresa de la introduccion de manera automatica en la nuevas versiones de xalan de la etiqueta en el html resultante del parseo. El problema surgia al no haber especificado encoding en el parser hasta ahora (sooooooo ‘99) ya que el charset que indicaba en la etiqueta meta era UTF-8 (el default).
Algunos navegadores de verdad conseguian tragarse el html y seguir funcionando, pero otros – el bloody fucking standard en mi client e- no.
Bueno no pasa nada, me dije. Una pequeña instrucción al parser y arreglado:
transformer.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1");
O eso pensaba yo. La etiqueta meta se negaba a cambiar.
Señor IT Manager :¿Y esto?Pobre Developer/Product Manager: Un error en (Mente del IT manager)bla, bla, bla, bla, bla, bla, bla, bla,(Mente del IT manager) y no lo cambia.
SITM:¿Y cuanto tiempo te va a llevar cambiarlo?
PDPM:Pues…(Mente del Pobre Developer/Product Manager)ni puta idea(Mente del Pobre Developer/Product Manager) un par de horas.
SITM. Estamos yendo muy lentos…y bla, bla …..
Despues de un buen rato en internet encuentro una solución sencilla y lenta (recordar que hablamos de cientos de XSLs), que no se muy bien por qué si funciona:
<xsl:output method="html" encoding="ISO-8859-1"/>
Como no estoy dispuesto, primero a tener que tocar todas las xsls, segundo a confiar en que todas las personas (aficionadísimas al copy&paste de codigo fuente prehistorico) se encarguen de especificar el output en las nuevas xsls que creen, y por ultimo a romper el principio DRY que intento seguir, decido seguir escarbando.
Me bajo el codigo fuente de Xalan, lo traceo, lo compilo, etc… y encuentro el ¿bug? ¿issue? ¿feature?. Necesito especificar el metodo de salida del parseo :
serializer.setOutputProperty(OutputKeys.METHOD, "html");
Una sola linea de codigo y todo el aplicativo empieza a escupir ISO-8859-1. Despues del cumplido mail a la lista de desarrollo de xalan-dev, abro el editor y empiezo a escribir este post como copia de seguridad de mi cerebro mientras pienso como cojones voy a justificar el tiempo empleado en toda esta mierda.
Y la respuesta es muy sencilla. No voy a poder. Punto.
PS: Interesados en un post “No puedes justificar lo invisible” poned +1 en los comentarios.
Trackbacks
Use the following link to trackback from your own site:
http://fco.textdriven.com/articles/trackback/135
-
Por muchas razones, de muchos es conocido nuestro querido ex-vecino Aitor . Tengo que reconocer que leo su weblog, que si podeis digerirlo, es muy recomendable. Pero bueno, a lo que iba, que no es a hacerle coba... o al menos no de esa forma :-D.
Por cierto… +1 al post ese.
Vale con el cambio se me olvida leerte lo siento es que en este windows no tengo lector de rss y linux no va con el modem usb de terra (que excusa eh?).
pero ahí va mi +1 :D
+1, esta claro. Tuve el mismo problema con Axis 1.algo y tuve que hacer exactamente lo mismo.
Mi reflexión entonces fue la siguiente: Y si axis no hubiese sido opensource? Entonces me rei.
Gracias a que entré a (des)tiempo o a mi anterior jefe de proyecto – o a Dios – no he tenido que pelearme con Axis por poquito! Ésta es una de mis primeras experiencias profesionales como desarrollador en J2EE y la verdad que hay demasiado poco DRY por ahí andando. Una p*ta lástima.
+1 ;)
Vitxo, Axis no es que en si mismo sea el infierno (aunque no sea tampoco el paraíso), el mayor problema viene de los programadores (o que no piensan en i18n
axis team?, o que con demasiado zoquetes para darse cuenta de cuando algo esta malla “gente” de Aitor).