Jaws 0.4, o El Encoding Contraataca?

Como muchos ya saben, hemos liberado la versión 0.4 de Jaws, la cual tiene por 'alias': Well It’s True That We Love One Another (una canción que estaba escuchando mientras buscabamos un nombre).. medio cursi el nombre tongue.png .

Bueno, Jaws 0.4 ha sido la admiración de muchos por todas las cosas que trae ahora.. sin embargo se ha ganado el repudio por forzar el encoding.

En mi caso no tengo ningún problema, pero ya he probado en blogs que tienen el problema y creo que tenemos la solución, posiblemente liberemos un Jaws 0.4.1 (con un nombre MAS cursi) que va a tener todos los fixes face-smile.png .

El problema es 'sencillo', bueno no es uno.. son tres:

* He encontrado que la librería classTextile (que se encuentra en php) forza el encoding, sin importar si el usuario lo necesita o no. Una solución es el comentar la linea

$text = $this->encodeEntities($text);
 

* Otro problema es el encoding que las páginas tienen y que ion ha forzado a aplicarlo en los temas (te dije ion! face-wink.png ). Es decir, ahora usamos un 'encoding' en el registry, el cual el usuario puede configurar. La bronca es que ese encoding se 'pega' en el theme que el usuario este usando. Es decir, si el usuario anda usando un template que dice: UTF-8, pues ya se la pelo, porque SOLO le va a funcionar con UTF-8. Bueno no es tanta bronca esto si se quita del layout.html del template el encoding. Si se lo quitamos el browser/apache se pueden hace cargo (el browser lo puede configurar el cliente y el apache puede ser CAPAZ de forzar el encoding o poner uno por default, el DefaultCharSet).

* Ahora, que si aparte de usar un encoding 'forzado' en nuestro html, le aplicamos a que guarde texto en la BD 'forzando' de nuevo al encoding pues ya se imaginan.. seria como un 'doble encoding'. Me he dado cuenta que cuando mandas un texto por POST, el texto va a ir en el encodign que este configurado el HTML, asi que si le aplicas de nuevo el 'encoding' pues se hace: basura. La solución es hacer como era en Jaws 0.3: no usar htmlentities ni htmlspecialchars, no preocuparnos por el encoding, que el browser y el apache se preocupen por el. Claro, muchos van a brincar: "como carajos piensas dejar a X usuario a que escriba un comentario sin htmlentities".. calma, calma, para eso tenemos el str_replace y strip_tags.. para quitar esos 'malevolos' tags.

Las soluciones ya las tenemos y probadas, ahora falta aplicarlas a todos los temas y .php's.

Ahora ando escuchando Primus, Sugarcubes y Björk:

Primus - The Family and the Fishing Net