Skip site navigation (1) Skip section navigation (2)

Re: duda con client encoding

From: uno dos <refreegrata(at)yahoo(dot)com>
To: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Cc: "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: duda con client encoding
Date: 2011-09-15 16:30:44
Message-ID: 1316104244.78422.YahooMailNeo@web38406.mail.mud.yahoo.com (view raw or flat)
Thread:
Lists: pgsql-es-ayuda



________________________________
From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: uno dos <refreegrata(at)yahoo(dot)com>
Cc: Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Sent: Thursday, September 15, 2011 12:20 PM
Subject: Re: [pgsql-es-ayuda] duda con client encoding

Muchas gracias por responder. Esto quiere decir, que para todos los efectos las bases de datos con client_encoding 'UTF8' se comportarán como una  verdaderamente 'UTF8', independientemente de su real encoding.

Entonces creo que podría funcionar esto.

1) Clono la base de datos de A(la antigua). La clonada (exactamente igual a A) la denominaré 'Clon_A';
2) cambio el client_encoding de 'Clon_A' a 'UTF8';
3) copio los datos deseados desde 'Clon_A' a B(la nueva);

Según entiendo debiera funcionar ya que la copia la estaría realizando entre 2 bases de datos con encoding 'LATIN1' y client_encoding 'UTF8';

¿Estoy en lo correcto?

Saludos.

Excerpts from uno dos's message of jue sep 15 12:48:33 -0300 2011:
> Hola lista. Tengo una duda.
> Supongamos que yo tengo una base de datos en LATIN1, pero con un CLIENT_ENCODING = 'UTF8'. Esto significa que si hago una INSERT, todas las cadenas a insertar debieran estar en 'UTF8', para que postgresql haga una especie de conversión interna desde UTF8 a LATIN1?
> 
> Esta situación se produce por que hago uso de un framework de desarrollo que trabaja mejor con UTF8, pero el servidor está con una codificación LATIN1. Es por esto que la base de datos estará en LATIN1, aunque yo preferiría que hubiese sido creada en UTF8, e intento suplir este problema con el CLIENT_ENCODING.
> 

Todos los datos en la BD estarán siempre en Latin1.  Si siempre declaras
correctamente el client_encoding, no deberías tener ningún problema de
"caracteres raros".

> La cosa funciona bien, pero yo antes de comenzar a usar el sistema voy a realizar un script que copie algunos datos de otra base de datos (llamemosla A) a la nueva (llamemosla B) y la cosa sería:
> 
> A : encoding LATIN1, client_encoding LATIN1.
> B : encoding LATIN1, client_encoding UTF8.
> 
> Podría generar este proceso algunos caracteres raros o algo por el estilo.

Depende de cómo copies los datos.  Si extraes datos desde A en Latin1,
entonces debes declarar client_encoding=latin1 al ingresarlos en B.  De
lo contrario se corromperán.  Por lo tanto si pones client_encoding=utf8
al conectarte a B, obviamente aparecerán "caracteres raros".

-- 
Álvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>

In response to

Responses

pgsql-es-ayuda by date

Next:From: Alvaro HerreraDate: 2011-09-15 16:37:24
Subject: Re: duda con client encoding
Previous:From: Alvaro HerreraDate: 2011-09-15 16:29:51
Subject: Re: duda con client encoding

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group