Re: Conve=?ISO-8859-1?Q?rsi=F3n_de_LATI?=N1 a UTF8

Lists: pgsql-es-ayuda
From: rosorio(at)servidor(dot)unam(dot)mx
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Conversión de LATIN1 a UTF8
Date: 2007-11-26 09:42:36
Message-ID: 1196070156.474a950c9573e@www.correo.unam.mx
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Hola a todos, después de mucho rato de no dar con la solución (googlear, buscar
en la lista, etc.) he decidido recurrir a su ayuda.

Estoy tratando de llevar un cluster generado en LATIN1 hacia uno que sea
generado en UTF8, todo esto en una distribución Centos con postgres 8.1.9

Para el archivo i18n tengo

LANG="es_MX.UTF-8"
SUPPORTED="es_MX.UTF-8:es_MX:es:es_ES.UTF-8:es_ES:es"
SYSFONT="latarcyrheb-sun16"

con locale me arroja

LANG=es_MX.UTF-8
LC_CTYPE="es_MX.UTF-8"
LC_NUMERIC="es_MX.UTF-8"
LC_TIME="es_MX.UTF-8"

Pero al crear el cluster las cosas ya no operan del todo bien ya que comienza a
desplegar caracteres erroneos.

initdb -E UTF8 --locale=es_MX.UTF-8 -D ./data
Los archivos de este cluster serán de propiedad del usuario «postgres».
Este usuario también debe ser quien ejecute el proceso servidor.
El cluster será inicializado con configuración local es_MX.UTF-8.

Ahora bien, si reviso cómo quedó la instalación obtengo:

template1=# \l
Listado de base de datos
Nombre | Dueño | Codificación
-----------+----------+---------------
postgres | postgres | UTF8
template0 | postgres | UTF8
template1 | postgres | UTF8

Sin embargo con \set veo que ENCODING = 'LATIN1' (ver más adelante)

template1=# \set
VERSION = 'PostgreSQL 8.1.9 on x86_64-redhat-linux-gnu, compiled by GCC gcc
(GCC) 4.1.1 20070105 (Red Hat 4.1.1-52)'
AUTOCOMMIT = 'on'
VERBOSITY = 'default'
PROMPT1 = '%/%R%# '
PROMPT2 = '%/%R%# '
PROMPT3 = '>> '
DBNAME = 'template1'
USER = 'postgres'
PORT = '5432'
ENCODING = 'LATIN1'

Por lo que al hacer el vaciado de mi respaldo de LATIN1 ha esta nueva
instalación tengo que, para ver correctamente los registros, poner en la consola
de psql \encoding latin1 ya que con UTF8 me despliega de manera erronea los
caractéres ñ y acentos. (al dump que hice le cambio únicamente la codíficación
de creación de la base a UTF8, los SET CLIENT ENCODING permanecen en LATIN1)

Alguna observación al proceso?. Agradezco de antemano cualquier observación y
perdón por la extensión del mensaje

Saludos

Roberto Osorio

-------------------------------------------------
www.correo.unam.mx
UNAMonos Comunicándonos


From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: rosorio(at)servidor(dot)unam(dot)mx
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Conversión de LATIN1 a UTF8
Date: 2007-11-26 15:26:44
Message-ID: 20071126152644.GP6248@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda


Creo que la confusión es que estás usando un terminal Latin-1 con un
locale UTF8. En otras palabras creo que la base de datos está bien,
pero la estás desplegando incorrectamente.

rosorio(at)servidor(dot)unam(dot)mx escribió:

> Pero al crear el cluster las cosas ya no operan del todo bien ya que comienza a
> desplegar caracteres erroneos.
>
> initdb -E UTF8 --locale=es_MX.UTF-8 -D ./data
> Los archivos de este cluster serán de propiedad del usuario «postgres».
> Este usuario también debe ser quien ejecute el proceso servidor.
> El cluster será inicializado con configuración local es_MX.UTF-8.

Si el terminal fuera UTF8 esto te habría salido correctamente. Prueba
abriendo un terminal utf8, creo que puedes lograrlo con

xterm -u8 +lc

luego prueba lo siguiente otra vez:

> template1=# \l
> Listado de base de datos
> Nombre | Dueño | Codificación
> -----------+----------+---------------
> postgres | postgres | UTF8
> template0 | postgres | UTF8
> template1 | postgres | UTF8

debería mostrarse correctamente.

> Por lo que al hacer el vaciado de mi respaldo de LATIN1 ha esta nueva
> instalación tengo que, para ver correctamente los registros, poner en la consola
> de psql \encoding latin1 ya que con UTF8 me despliega de manera erronea los
> caractéres ñ y acentos. (al dump que hice le cambio únicamente la codíficación
> de creación de la base a UTF8, los SET CLIENT ENCODING permanecen en LATIN1)

Si funciona correctamente al hacer \encoding latin1, es un indicador que
el terminal es Latin1 y que además el servidor tiene los datos
ingresados correctamente, y que está haciendo la recodificación sin
problemas.

--
Alvaro Herrera http://www.flickr.com/photos/alvherre/
"Some men are heterosexual, and some are bisexual, and some
men don't think about sex at all... they become lawyers" (Woody Allen)


From: Julio Cesar Sánchez González <knowhow(at)sistemasyconectividad(dot)com(dot)mx>
To: rosorio(at)servidor(dot)unam(dot)mx
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Conversión de LATIN1 a UTF8
Date: 2007-11-26 16:27:50
Message-ID: 1196094470.7405.4.camel@andromeda
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda


El lun, 26-11-2007 a las 03:42 -0600, rosorio(at)servidor(dot)unam(dot)mx escribió:
> Hola a todos, después de mucho rato de no dar con la solución (googlear, buscar
> en la lista, etc.) he decidido recurrir a su ayuda.
>
> Estoy tratando de llevar un cluster generado en LATIN1 hacia uno que sea
> generado en UTF8, todo esto en una distribución Centos con postgres 8.1.9
>
> Para el archivo i18n tengo
>
> LANG="es_MX.UTF-8"
> SUPPORTED="es_MX.UTF-8:es_MX:es:es_ES.UTF-8:es_ES:es"
> SYSFONT="latarcyrheb-sun16"
>
> con locale me arroja
>
> LANG=es_MX.UTF-8
> LC_CTYPE="es_MX.UTF-8"
> LC_NUMERIC="es_MX.UTF-8"
> LC_TIME="es_MX.UTF-8"
>
> Pero al crear el cluster las cosas ya no operan del todo bien ya que comienza a
> desplegar caracteres erroneos.
>
> initdb -E UTF8 --locale=es_MX.UTF-8 -D ./data
> Los archivos de este cluster serán de propiedad del usuario «postgres».
> Este usuario también debe ser quien ejecute el proceso servidor.
> El cluster será inicializado con configuración local es_MX.UTF-8.
>
> Ahora bien, si reviso cómo quedó la instalación obtengo:
>
> template1=# \l
> Listado de base de datos
> Nombre | Dueño | Codificación
> -----------+----------+---------------
> postgres | postgres | UTF8
> template0 | postgres | UTF8
> template1 | postgres | UTF8
>
> Sin embargo con \set veo que ENCODING = 'LATIN1' (ver más adelante)
>
> template1=# \set
> VERSION = 'PostgreSQL 8.1.9 on x86_64-redhat-linux-gnu, compiled by GCC gcc
> (GCC) 4.1.1 20070105 (Red Hat 4.1.1-52)'
> AUTOCOMMIT = 'on'
> VERBOSITY = 'default'
> PROMPT1 = '%/%R%# '
> PROMPT2 = '%/%R%# '
> PROMPT3 = '>> '
> DBNAME = 'template1'
> USER = 'postgres'
> PORT = '5432'
> ENCODING = 'LATIN1'
>
> Por lo que al hacer el vaciado de mi respaldo de LATIN1 ha esta nueva
> instalación tengo que, para ver correctamente los registros, poner en la consola
> de psql \encoding latin1 ya que con UTF8 me despliega de manera erronea los
> caractéres ñ y acentos. (al dump que hice le cambio únicamente la codíficación
> de creación de la base a UTF8, los SET CLIENT ENCODING permanecen en LATIN1)
>
> Alguna observación al proceso?. Agradezco de antemano cualquier observación y
> perdón por la extensión del mensaje
>
> Saludos
>
> Roberto Osorio
>
>
>
> -------------------------------------------------
> www.correo.unam.mx
> UNAMonos Comunicándonos
>
> --
> TIP 4: No hagas 'kill -9' a postmaster

Roberto, si tus datos los tenias anteriormente en Latin1, prueba
convirtiendolos en UTF8 mediante la funcion convert de postgresql:
http://www.postgresql.org/docs/8.2/static/functions-string.html

UTF8 es multibyte, lo que latin1 no.

--
Saludos,

Julio Cesar Sánchez González.

--
Ahora me he convertido en la muerte, destructora de mundos.
Soy la Muerte que se lleva todo, la fuente de las cosas que vendran.

www.sistemasyconectividad.com.mx http://darkavngr.blogspot.com/


From: rosorio(at)servidor(dot)unam(dot)mx
To: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Conve=?ISO-8859-1?Q?rsi=F3n_de_LATI?=N1 a UTF8
Date: 2007-11-26 17:40:07
Message-ID: 1196098807.474b04f71194c@www.correo.unam.mx
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Mensaje citado por: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>:

>
> Creo que la confusión es que estás usando un terminal Latin-1 con un
> locale UTF8. En otras palabras creo que la base de datos está bien,
> pero la estás desplegando incorrectamente.
>
Sobre esto entoces asumo que el procedimiento ha sido correcto y que el punto
como mencionas está en la terminal, luego entonces procederé a realizar los cambios.

Julio Cesar Sánchez, gracias por tu comentario sin aembargo creo que en este
caso no procede porque estoy haciendo el vaciado de un dump y para utilizar la
función habría problemas, sin embargo me has ayudado a resolver otro problema
que traía atorado y que todavía no ventilaba en la lista.

> rosorio(at)servidor(dot)unam(dot)mx escribió:
>
> > Pero al crear el cluster las cosas ya no operan del todo bien ya que
> comienza a
> > desplegar caracteres erroneos.
> >
> > initdb -E UTF8 --locale=es_MX.UTF-8 -D ./data
> > Los archivos de este cluster serán de propiedad del usuario
> «postgres».
> > Este usuario también debe ser quien ejecute el proceso servidor.
> > El cluster será inicializado con configuración local es_MX.UTF-8.
>
> Si el terminal fuera UTF8 esto te habría salido correctamente. Prueba
> abriendo un terminal utf8, creo que puedes lograrlo con
>
> xterm -u8 +lc
>
> luego prueba lo siguiente otra vez:
>
> > template1=# \l
> > Listado de base de datos
> > Nombre | Dueño | Codificación
> > -----------+----------+---------------
> > postgres | postgres | UTF8
> > template0 | postgres | UTF8
> > template1 | postgres | UTF8
>
> debería mostrarse correctamente.
>
>
> > Por lo que al hacer el vaciado de mi respaldo de LATIN1 ha esta nueva
> > instalación tengo que, para ver correctamente los registros, poner en
> la consola
> > de psql \encoding latin1 ya que con UTF8 me despliega de manera
> erronea los
> > caractéres ñ y acentos. (al dump que hice le cambio únicamente la
> codíficación
> > de creación de la base a UTF8, los SET CLIENT ENCODING permanecen en
> LATIN1)
>
> Si funciona correctamente al hacer \encoding latin1, es un indicador
> que
> el terminal es Latin1 y que además el servidor tiene los datos
> ingresados correctamente, y que está haciendo la recodificación sin
> problemas.
>
> --
> Alvaro Herrera
> http://www.flickr.com/photos/alvherre/
> "Some men are heterosexual, and some are bisexual, and some
> men don't think about sex at all... they become lawyers" (Woody Allen)
> --
> TIP 2: puedes desuscribirte de todas las listas simultáneamente
> (envía "unregister TuDirecciónDeCorreo" a majordomo(at)postgresql(dot)org)
>

-------------------------------------------------
www.correo.unam.mx
UNAMonos Comunicándonos