Re: cambio Encoding en Cliente en ems manager

From: "David Primero Segundo" <aberracion2001(at)hotmail(dot)com>
To: alvherre(at)commandprompt(dot)com, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: cambio Encoding en Cliente en ems manager
Date: 2007-03-16 10:00:42
Message-ID: BAY125-F249F3916E2816C2B93A2D3C0710@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

>From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
>To: David Primero Segundo <aberracion2001(at)hotmail(dot)com>
>CC: colina_movil(at)yahoo(dot)com, pgsql-es-ayuda(at)postgresql(dot)org
>Subject: Re: [pgsql-es-ayuda] cambio Encoding en Cliente en ems manager
>Date: Thu, 15 Mar 2007 10:46:20 -0400
>
>David Primero Segundo escribió:
>
> > tengo una aplicación hecha en lazarus (casi delphi para linux) que
>conecta
> > a la base de datos y realiza una consulta, pues bien, esta aplicación
> > cuando la compilo y ejecuto en el linux todos los caracteres se muestran
> > bien. Pero cuando esta misma aplicación la compilo y ejecuto para
>windows,
> > los caracteres se muestran mal, como si no estuviera definido LATIN1, y
>no
> > sé por qué ocurre esto. Yo tengo definido LATIN1 en el servidor
> > postgresql en la base de datos en cuestion hice: \encoding LATIN1, pero
>en
> > windows los caracteres siguen sin salir bien, ¿es que tengo que
>configurar
> > en windows el encondig?, no creo porque no tengo este problema en otras
> > aplicaciones, es decir, que otras aplicaciones me muestra bien los
> > caracteres de la 'ñ' por ejemplo o los simbolos de acentuación.
>
>En este caso yo diria que tienes que enviar un "SET client_encoding" al
>principio de la aplicacion en el caso en que se ejecute en Windows.
>Quizas el encoding que necesitas no es Latin1, sino, por ej. Win-1252 o
>UTF-8, o alguna otra cosa. No creo que tengas que configurar Windows
>para eso, sino que tienes que configurar la aplicacion (lo cual se hace
>con el SET client_encoding). El problema es: como detectas el encoding
>en que Windows se esta ejecutando? Porque si tu lo pones un valor
>determinado que hace que en tu PC se vea correctamente, es muy posible
>que despues te vayas a otro PC con Windows y alla se vea mal :-(
>
>Una idea es poner una opcion de configuracion en la aplicacion para que
>el usuario pueda definir el encoding en que trabaja la aplicacion. O
>que alguien te diga como obtener el encoding desde el registro de
>Windows usando la API Win32.
>
>--
>Alvaro Herrera http://www.CommandPrompt.com/
>The PostgreSQL Company - Command Prompt, Inc.
>
>---------------------------(fin del mensaje)---------------------------
>TIP 9: el optimizador ignorará el uso de recorridos de índice si los
> tipos de datos de las columnas no coinciden

Vale amigo, te explico:

bien tengo una máquina debian, en la que tengo instalado entre otras cosas
un servidor postgresql, en este servidor tengo creada una base de datos.

Luego en el mismo servidor tengo instalado lazarus (es como delphi) y con
lazarus he desarrollado una sencilla app que hace consultas a la base de
datos que tengo. Lazarus se comunica con postgresql a través de un
componente denominado TPQConnection (que está diseñado exclusivamente para
postgresql).

Hasta aquí todo funciona perfectamente. Lanzando la app en la máquina debian
todos los caracteres se ven correctamente, incluso si tengo definido
encoding a UTF8 y client_encoding UTF8 en la base de datos. Aunque si entro
en la base de datos directamente a través de psql y hago una consulta, los
nombres aparecen con caracteres extraños, tengo que definir en este caso el
encoding a LATIN1 para que los caracteres se muestren correctamente. Pero en
resumen, hasta aquí todo está controlado y funciona bien.

El problema viene cuando:
Lazarus me permite compilar la app que tengo desarrollada en la máquina
debian para una máquina win32, esto es muy cómodo.
Así que cuando compilo la app desde el equipo debian para win32 y luego
lanzo esta app win32 o bien desde el equipo debian a través de wine o bien
desde una máquina windows, todo funciona perfectamente a excepción de los
caracteres, que se muestran mal. Aun teniendo definido tanto el encondig
como el set_client a LATIN1 en el servidor.

Y un detalle importante que he observado es que estos caracteres que se
muestran incorrectamente se encuentran tanto en las consultas que aparecen
en la app como en el texto que se escribe en dicha app, por ejemplo dentro
de una etiqueta Text o Label. Por lo tanto, creo que no es debido al
servidor postgresql y las variables encoding o set_client, sino que puede
ser algo referente al windows o al Lazarus. Pero Lazarus también lo dudo
porque la app funciona correctamente (se ven bien los caracteres tanto los
de las consultas como los de texto de la propia app) cuando la lanzo en
linux.

A ver si puedes ayudarme o darme alguna pista de por donde tengo que ir,
muchas gracias.

_________________________________________________________________
Moda para esta temporada. Ponte al día de todas las tendencias.
http://www.msn.es/Mujer/moda/default.asp

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Oswaldo Hernández 2007-03-16 10:46:30 Re: Sincronizacion simultanea de datos
Previous Message David Primero Segundo 2007-03-16 09:57:08 Re: cambio Encoding en Cliente en ems manager