From: | Alvaro Herrera <alvherre(at)surnet(dot)cl> |
---|---|
To: | Edwin Quijada <listas_quijada(at)hotmail(dot)com> |
Cc: | gpoo(at)ubiobio(dot)cl, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Ayuda con Migracion |
Date: | 2005-06-25 18:00:41 |
Message-ID: | 20050625180041.GB6998@surnet.cl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
On Sat, Jun 25, 2005 at 03:09:48PM +0000, Edwin Quijada wrote:
> Pregunta :
> Si cambio mi locale en .conf de postgres, no tengo q crear la base de datos
> con un encode en especifico. Ejemplo si uso iso-8859-15 en mi locale podre
> usar los simbolos de espanol y no tendria que crear la DB con LATIN1???
Hola,
Primero que nada no hay que confundir el locale con la codificacion. El
locale es la configuracion local, que incluye entre otras cosas la forma
como se deben formatear los numeros, el formato de numeros para moneda,
el formato de fecha, pero para nuestro caso lo mas importante es el
"collation" que es la definicion de orden de los caracteres (por ej. que
A viene antes que B, á antes que b, y asi).
La codificacion es la manera como los caracteres se convierten en bits.
Por ej. que A es 00111110, o que el caracter á es 11100001 en latin1,
pero 11000011 10100001 en utf8 (como ves, en utf8 se usa mas espacio que
en latin1 para guardar una letra con acento; dos bytes en vez de uno).
En PostgreSQL, los locales se usan con una codificacion especifica.
Nota eso si que son configuraciones totalmente independientes. Por ej.
puedes tener un locale es_CL que este codificado en iso-8859-15, o bien
en UTF-8. En cualquiera de los dos puedes usar simbolos en español.
Si seleccionas el locale es_CL.iso8859-15 entonces estas obligado a
seleccionar encoding iso8859-15. Si seleccionas el locale es_CL.UTF-8
entonces estas obligado a seleccionar encoding UTF-8. Si no lo haces de
esta manera puedes tener problemas muy sutiles mas adelante.
Observa que en versiones recientes, initdb selecciona automaticamente el
encoding correcto a partir del locale. (Puedes especificar cambios en
ambas cosas si lo deseas)
Nota que el locale llamado es_CL es un sinonimo de es_CL.iso8859-1; esto
es equivalente a decir que el encoding por defecto para es_CL es
iso-8859-1.
LATIN1 es un sinonimo de iso-8859-1. iso-8859-15 es un locale
ligeramente diferente de iso-8859-1, que incluye el caracter del euro y
otras pequeñas omisiones que afectaron otros alfabetos de Europa
occidental (Frances, finlandes, cosas asi). Los caracteres que tuvieron
que sacar de LATIN1 para darle cabida a estos nuevos caracteres son
algunas de esas rayas para hacer dibujos en "ASCII art".
LATIN9 es un sinonimo de iso-8859-15.
Espero no haber sido demasiado confuso.
(Para aumentar aun mas la confusion podria agregar que IANA definio
codificaciones llamadas algo como ISO8859-1, que es ligeramente
diferente de la codificacion definida por ISO/IEC llamada ISO-8859-1.
La diferencia son algunos caracteres de control, que ISO no define. Hay
mas informacion sobre este tema en la Wikipedia.)
--
Alvaro Herrera (<alvherre[a]surnet.cl>)
"Por suerte hoy explotó el califont porque si no me habría muerto
de aburrido" (Papelucho)
From | Date | Subject | |
---|---|---|---|
Next Message | Miguel Santillan | 2005-06-26 00:45:09 | conection refused |
Previous Message | Alvaro Herrera | 2005-06-25 17:41:28 | Re: AYUDA CON PHP+POSTGRESQL |