RV: [pgsql-es-ayuda] MINI-Guía: Incluir caracteres acentuados, eñes y demás

From: Francisco Rodríguez <registros(at)meetworks(dot)com>
To: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RV: [pgsql-es-ayuda] MINI-Guía: Incluir caracteres acentuados, eñes y demás
Date: 2005-11-05 12:43:51
Message-ID: auto-000000426395@meetworks.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Espero os resulte útil.

Saludos.

Francisco Rodríguez Cala
Meetworks
Servicios informáticos administrados para empresas
http://www.meetworks.com

-----Mensaje original-----
De: Francisco Rodríguez [mailto:registros(at)meetworks(dot)com]
Enviado el: sábado, 05 de noviembre de 2005 13:35
Para: 'Martín Marqués'
Asunto: RE: [pgsql-es-ayuda] uso de SOUNDEX para incluir caracteres
acentuados en SQL_ASCII

Encantado de aportar mi granito de arena. Aquí va una guía paso a paso
resumida de cómo lo he hecho (extracto de mi HOWTO particular en mi base de
conocimientos ;-) ):

Tras diversas pruebas con malos resultados, se ha logrado una configuración
que permite la utilización correcta de eñes, acentos y otros caracteres para
almacenar cadenas en español.

--------------------------------------------------
Cosas a modificar/añadir:
--------------------------------------------------

Fichero /var/lib/pgsql/postgresql.conf:
--------------------------------------------------

lc_messages = 'es_ES' # locale for system error message strings
lc_monetary = 'es_ES' # locale for monetary formatting
lc_numeric = 'es_ES' # locale for number formatting
lc_time = 'es_ES' # locale for time formatting

Fichero /etc/init.d/postgresql (o el encargado de llamar a initdb):
--------------------------------------------------

initdb -o -E LATIN10

- la opción -o permite el tratamiento de fechas en formato europeo.

- la opción -E fuerza un character set en concreto para el servidor. Nota:
La diferencia de funcionamiento añadiendo o no esta opción no ha sido
comprobada, pero mejor añadirla puesto que con ella el funcionamiento de
Facturalux y EMS PostgreSQL Manager ha sido correcto.

Creación de la base de datos:
--------------------------------------------------

create database <nombre_bd> with encoding 'UTF-8';

Configuración de qsql, EMS PostgreSQL Manager y cualquier aplicación cliente
--------------------------------------------------

Es necesario seleccionar el client_encoding a LATIN9. En EMS Manager
simplemente se selecciona el mismo en los datos de conexión.

Mediante qsql, el procedimiento a seguir es:

- Comprobar client_encoding actual:

show client_encoding;

- Cambiar client_encoding:

set client_encoding to 'LATIN9';

Nota: Esta sentencia SET debe ser lanzada mediante el API de conexión que
cada cual use en sus desarrollos para así garantizar las conversiones
adecuadas.

Offtopic: Configuración de FacturaLUX.
--------------------------------------------------

En el apartado Configuración\Fuente del cargador principal de la aplicación,
hay que especificar en el campo ALFABETO la opción LATIN. Con ello todo
funciona como se espera aquí por nuestra tierra.

Dato: la configuración de LC_MESSAGES a es_ES por si sola muestra mensajes
en español pero con montones de caracteres raros. Una vez configurado dicho
parámetro y los descritos previamente, los mensajes del servidor se muestran
correctamente en español.

Bueno, espero que os resulte de utilidad y me encantaría saber si han
resuelto vuestros problemas o si existen mejores maneras de hacerlo. Si
alguien piensa que esta mini-guía puede resultar útil a más gente, que la
publique donde quiera para el conocimiento de todos.

Un saludo.
Francisco Rodríguez Cala
Meetworks
Servicios informáticos administrados para empresas http://www.meetworks.com

-----Mensaje original-----
De: Martín Marqués [mailto:martin(at)bugs(dot)unl(dot)edu(dot)ar] Enviado el: sábado, 05 de
noviembre de 2005 13:15
Para: Francisco Rodríguez
Asunto: Re: [pgsql-es-ayuda] uso de SOUNDEX para incluir caracteres
acentuados en SQL_ASCII

Sería bueno que mandes esto a la lista.

El Sáb 05 Nov 2005 09:00, escribió:
> Hola a todos y encantado de entrar a formar parte de la lista.
>
> Aún me considero principiante en PostgreSQL puesto que he comenzado a
> trabajar con ella hace poco, pero mi humilde experiencia en este corto
> tiempo es que las eñes y acentos son un COÑAZO. He solucionado los
> problemas finalmente pero esto ha pasado por crear la BD con el
> encoding adecuado.
>
> Como sabrás, pg tiene 2 "codificaciones": una en el servidor y otra en
> el cliente. Según qué codificación tengas en la BD, así podrás
> seleccionar una y otra codificación en el cliente.
>
> Siempre que elijas un client-encoding compatible, las conversiones son
> automáticas. Yo mismo he tenido los problemas que describes pero con
> UNICODE.
>
> He solucionado el problema creando la BD como UTF-8 y usando LATIN9
> para la codificación en el cliente. Con esto, las eñes, acentos y
> demás pescas se almacenan correctamente, se visualizan, y son usadas
> en las SELECT como la que tratas de hacer.
>
> Como regalo a esto, los mensajes del servidor ahora se muestran
> perfectamente, con acentos y comillas (antes salían con caracteres
> raros aunque pusiera LC_MESSAGES a es_ES.
>
> Bueno a lo mejor muchos pensáis que estoy diciendo tonterías porque la
> solución es mucho más simple, pero la inexperiencia y la necesidad te
> hace buscar soluciones de "urgencia".
>
> Si por el contrario a alguien le interesa esto, estaré encantado de
> proporcionar toda la info de cómo lo he hecho.
>
> Un saludo.
>
> Francisco Rodríguez Cala
> Meetworks
> Servicios informáticos administrados para empresas
> http://www.meetworks.com
>
> -----Mensaje original-----
> De: pgsql-es-ayuda-owner(at)postgresql(dot)org
> [mailto:pgsql-es-ayuda-owner(at)postgresql(dot)org] En nombre de Martín
> Marqués Enviado el: viernes, 04 de noviembre de 2005 21:48
> Para: pgsql-es-ayuda(at)postgresql(dot)org
> CC: Cesar A.
> Asunto: Re: [pgsql-es-ayuda] uso de SOUNDEX para incluir caracteres
> acentuados en SQL_ASCII
>
> El Vie 04 Nov 2005 16:17, Cesar A. escribió:
> > Ya he revisado los archivos de la lista, y entendido que no se puede
> > por la codificación, se me ocurrió probar la función SOUNDEX...
>
> Jamás vi dicha funcion y no esta por defecto en mi servidor.
> Instalaste algun contrib en la base?
>
> > Más sin embargo, como no quiero adaptar el código arriba, decidí
> > hacerlo sobre el servidor de pruebas que hay en la empresa, pero
> > éste, tiene la BD creada en LATIN1, y ya no va la consulta...
>
> No seria mas facil poner todas las bases en LATIN1, eso si es que
> estan usando caracteres como las vocales acentuadas o la ñ?
>
> --
> select 'mmarques' || '@' || 'unl.edu.ar' AS email;
> ---------------------------------------------------------
> Martín Marqués | Programador, DBA
> Centro de Telemática | Administrador
> Universidad Nacional
> del Litoral
> ---------------------------------------------------------
>
> ---------------------------(fin del
> mensaje)---------------------------
> TIP 10: visita nuestro canal de IRC #postgresql-es en irc.freenode.net

--
09:14:24 up 32 days, 10 min, 4 users, load average: 0.75, 1.05, 0.84
---------------------------------------------------------
Lic. Martín Marqués | SELECT 'mmarques' ||
Centro de Telemática | '@' || 'unl.edu.ar';
Universidad Nacional | DBA, Programador,
del Litoral | Administrador
---------------------------------------------------------

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Pablo Braulio 2005-11-05 12:44:53 Re: Quiero insertar la fecha actual en una columna.
Previous Message Juanky Moral 2005-11-05 12:10:47 Re: Quiero insertar la fecha actual en una columna.