Re: Problema con client_encoding='WIN1251' ybasede datos UTF8

From: Conxita Marín <cmarin(at)dims(dot)com>
To: "Alvaro Herrera" <alvherre(at)alvh(dot)no-ip(dot)org>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Problema con client_encoding='WIN1251' ybasede datos UTF8
Date: 2009-05-26 15:09:54
Message-ID: DED23DBEA85B4160B2A33D0DFF44EA29@pc13
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Alvaro Herrera escribió:

> comarin_telefonica escribió:
>
>> s001=> set client_encoding='WIN1251';
>> SET
>> s001=> CREATE temp table tmp_movcostp (
>> cmp_condoid integer
>> );
>
> Cuéntame una cosa, ¿por qué estás usando WIN1251 si ese juego de
> caracteres es para el lenguaje cirílico? Creo que deberías estar usando
> Win1252 para representar alfabetos de Europa occidental (que era donde
> estaba España la última vez que miré el mapa)
>
> http://en.wikipedia.org/wiki/CP1251
>

Pues no te sabría decir, viene de antiguo, las bases de datos en su día se
crearon así:

createdb -e -U usu -E WIN ...

Donde WIN parece ser que es un alias de WIN1251.

Las aplicaciones siempre han ido bien con todos los carácteres que
utilizamos por aquí (acentos abiertos, cerrados, c cedilla, ...) y no nos
habíamos preocupado del tema, hasta la versión 8.3 de Postgres en que ya no
te permite cargar distintas codificaciones en un mismo clúster. Ahí es donde
nos planteamos hacer las cosas mejor, utilizar UTF8 en el servidor y para
mantener la compatibilidad con los datos y aplicaciones hacer el set
client_encoding='WIN1251' en la conexión.

Esta es la historia.

De todas formas el misterioso problema del CREATE se soluciona con set
client_encoding='WIN1252'.

Pero entonces tengo problemas más graves por otro lado:

s000=> show server_encoding;
server_encoding
-----------------
UTF8
(1 fila)

s000=> show client_encoding;
client_encoding
-----------------
WIN1252
(1 fila)

s000=> select
pr_codi,pr_val,pr_catra,pr_catrm,pr_catrc,pr_catrb,pr_datra,pr_datrm,pr_datrc,pr_datrb
from dgprog where pr_npant = 'msg1 01' and (pr_list = 'B' or pr_list =
'S') order by pr_codi;
ERROR: carácter 0xd183 de codificación «UTF8» no tiene equivalente en
«WIN1252»
s000=>

Saludos.

Conxita Marín
Desarrollos Informáticos Modulares de Software, S.L.
www.dims.com

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Conxita Marín 2009-05-26 15:18:00 Re: Problema con client_encoding='WIN1251' y base de datos UTF8
Previous Message Jorge Romeo 2009-05-26 15:06:19 Timestamp como primary key