Para aquellos que caemos en la codificación iso-8859-1, debemos lidiarlos con los famosos caracteres especiales. Y si aparte le agregamos el hecho de tener que guardarlos en una base de datos y luego queremos poner uno de estos caracteres en una página, debemos sustituirlo por su código. Por ejemplo, la “á” (a minúscula acentuada) se escribe “á” de modo que la palabra página se escribiría en una página HTML de este modo: págin.
Esto quiere decir que en la base de datos debemos guardar el respectivo “á” en lugar de “á” ademas de verificar que la codificacion de la base de datos sea LATIN1 (en la mayoria de los casos).
Pero cuando utilizas sistemas como BIRT para el reporteo de los datos, pues cambiar estos caracteres solo a travez de la Palette Text y usar el formato HTML. Por desgracia esto solo funciona en el Layout y no en el Master Page, y como es mucha lata hacer todo eso, voy a utilizar la siguiente funcion (se me ocurririan mas pero siempre hay formas de solucionarlo “correctamente” y no “facilmente”).
CREATE OR REPLACE FUNCTION CaracterEspecial(varchar) RETURNS varchar AS ' DECLARE valor varchar; temporal varchar; BEGIN SELECT replace($1, "Á", "Á") into temporal; SELECT replace(temporal, "É", "É") into temporal; SELECT replace(temporal, "Í", "Í") into temporal; SELECT replace(temporal, "Ó", "O") into temporal; SELECT replace(temporal, "Ú", "Ú") into temporal; SELECT replace(temporal, "Ñ", "Ñ") into temporal; SELECT replace(temporal, "á", "á") into temporal; SELECT replace(temporal, "é", "é") into temporal; SELECT replace(temporal, "í", "í") into temporal; SELECT replace(temporal, "ó", "ó") into temporal; SELECT replace(temporal, "ú", "ú") into temporal; SELECT replace(temporal, "ñ", "ñ") into temporal; valor := temporal; RETURN valor; END; ' LANGUAGE plpgsql;
Y que obtenemos con esto… el reemplazo de caracteres especiales en sentencias SQL para poder ser manejados directamente. Si bien lo que queires es lo opuesto, pasar de “á” a su caracter especial “á. Pues solo hay que invertir la funcion:
CREATE OR REPLACE FUNCTION CaracterEspecial(varchar) RETURNS varchar AS ' DECLARE valor varchar; temporal varchar; BEGIN SELECT replace($1, "Á", "Á") into temporal; SELECT replace(temporal, "É", "É") into temporal; SELECT replace(temp...
Pues un punto a la flojera y a los “rapido” y “facil” contra cero de “correctamente”.
Nota: Como seguramente me preguntaran como usarla… ahi ta:
SELECT Campo1, Campo2, CaracterEspecial(Campo3), Campo4 FROM Tabla