Lists: | pgsql-es-ayuda |
---|
From: | "Paolo Lopez" <murphyperu(at)gmail(dot)com> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Problema ILIKE con letra eñe |
Date: | 2006-04-21 23:22:06 |
Message-ID: | ab97ec200604211622l2c89850bob0c9e96ba4a49f9a@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
Hola a todos los miembros de la lista.
Tengo un problema con respecto al ILIKE pero solo con la letra eñe.
Anteriormente ya tenía problemas con la eñe pero lo solucioné al crear
la BD con enconding = LATIN1.
El ejemplo es el siguiente:
CREATE TABLE PERSONA (
idPersona SERIAL NOT NULL,
nombres TEXT NULL,
apPaterno TEXT NULL,
apMaterno TEXT NULL,
PRIMARY KEY (idPersona)
);
insert into PERSONA values ( DEFAULT , 'juaN' , 'muÑante' , 'ruiZ' );
Cuando se quiere hacer las siguientes consultas :
1) select * from persona
where apPaterno ILIKE 'muñante' ;
se obtiene 0 lineas
2) select * from persona
where apPaterno ILIKE 'MUÑANTE' ;
se obtiene la unica linea insertada
3) select * from persona
where apPaterno ILIKE 'muÑante' ;
se obtiene la unica linea insertada
Los resultados son iguales en potgres 7.4 con cygwin en windows , asi
como en postgres 8.1.3 en windows XP.
Alguna idea de por que solo la eñe se escapa del ILIKE ???
Gracias por anticipado por sus posibles respuestas.
Paolo.
From: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
---|---|
To: | Paolo Lopez <murphyperu(at)gmail(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Problema ILIKE con letra eñe |
Date: | 2006-04-21 23:50:41 |
Message-ID: | 20060421235041.GB15077@surnet.cl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
Paolo Lopez escribió:
> Hola a todos los miembros de la lista.
>
> Tengo un problema con respecto al ILIKE pero solo con la letra eñe.
> Anteriormente ya tenía problemas con la eñe pero lo solucioné al crear
> la BD con enconding = LATIN1.
Muestra lo que retorna lo siguiente:
select upper('muñoz');
--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.
From: | "Paolo Lopez" <murphyperu(at)gmail(dot)com> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Problema ILIKE con letra eñe |
Date: | 2006-04-22 00:45:41 |
Message-ID: | ab97ec200604211745h25e346c8k9fa9529e14592c4a@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
No puedo ingresar el caracter eñe desde linea de comandos de windows,
salen caracteres extraños : + para eñe minuscula y D para eñe
mayuscula.
Envio el resultado generado en pgadmin:
select upper('muñoz');
resultado : "MUñOZ"
On 4/21/06, Alvaro Herrera <alvherre(at)commandprompt(dot)com> wrote:
> Paolo Lopez escribió:
> > Hola a todos los miembros de la lista.
> >
> > Tengo un problema con respecto al ILIKE pero solo con la letra eñe.
> > Anteriormente ya tenía problemas con la eñe pero lo solucioné al crear
> > la BD con enconding = LATIN1.
>
> Muestra lo que retorna lo siguiente:
>
> select upper('muñoz');
>
> --
> Alvaro Herrera http://www.CommandPrompt.com/
> The PostgreSQL Company - Command Prompt, Inc.
>
From: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
---|---|
To: | Paolo Lopez <murphyperu(at)gmail(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Problema ILIKE con letra eñe |
Date: | 2006-04-22 01:32:29 |
Message-ID: | 20060422013229.GA15667@surnet.cl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
Paolo Lopez escribió:
> No puedo ingresar el caracter eñe desde linea de comandos de windows,
> salen caracteres extraños : + para eñe minuscula y D para eñe
> mayuscula.
>
> Envio el resultado generado en pgadmin:
>
> select upper('muñoz');
>
> resultado : "MUñOZ"
Uff. Define el client_encoding correcto ... probablemente pgAdmin3 esta
usando un juego de caracteres que no es el mismo latin1 que tiene el
servidor.
Yo creo que ambas cosas estan relacionadas: el que la ñ no se convierta
a mayusculas, y el que salgan "caracteres raros" cuando los ingresas en
la linea de comandos.
--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.
From: | "Jaime Casanova" <systemguards(at)gmail(dot)com> |
---|---|
To: | "Paolo Lopez" <murphyperu(at)gmail(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Problema ILIKE con letra eñe |
Date: | 2006-04-22 04:03:01 |
Message-ID: | c2d9e70e0604212103r324d11bcs7690e90d62901b84@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
On 4/21/06, Paolo Lopez <murphyperu(at)gmail(dot)com> wrote:
> Hola a todos los miembros de la lista.
>
> Tengo un problema con respecto al ILIKE pero solo con la letra eñe.
> Anteriormente ya tenía problemas con la eñe pero lo solucioné al crear
> la BD con enconding = LATIN1.
>
> El ejemplo es el siguiente:
>
> CREATE TABLE PERSONA (
> idPersona SERIAL NOT NULL,
> nombres TEXT NULL,
> apPaterno TEXT NULL,
> apMaterno TEXT NULL,
> PRIMARY KEY (idPersona)
> );
>
> insert into PERSONA values ( DEFAULT , 'juaN' , 'muÑante' , 'ruiZ' );
>
>
> Cuando se quiere hacer las siguientes consultas :
>
> 1) select * from persona
> where apPaterno ILIKE 'muñante' ;
>
> se obtiene 0 lineas
>
>
> 2) select * from persona
> where apPaterno ILIKE 'MUÑANTE' ;
>
> se obtiene la unica linea insertada
>
>
> 3) select * from persona
> where apPaterno ILIKE 'muÑante' ;
>
> se obtiene la unica linea insertada
>
>
> Los resultados son iguales en potgres 7.4 con cygwin en windows , asi
> como en postgres 8.1.3 en windows XP.
>
>
> Alguna idea de por que solo la eñe se escapa del ILIKE ???
>
>
no puedo reproducir tu problema, los 3 selects muestran la fila ingresada.
windows xp
postgresql-8.1.3
database encoding latin1 aunque no tengo idea de cual sera el client_encoding
--
Atentamente,
Jaime Casanova
"What they (MySQL) lose in usability, they gain back in benchmarks, and that's
all that matters: getting the wrong answer really fast."
Randal L. Schwartz
From: | "Paolo Lopez" <murphyperu(at)gmail(dot)com> |
---|---|
To: | "Jaime Casanova" <systemguards(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Problema ILIKE con letra eñe |
Date: | 2006-04-22 06:27:16 |
Message-ID: | ab97ec200604212327o3d9834c6sf4633aa352cfc536@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
Jaime: Gracias por probar el ejemplo, pero los resultados del select
los obtuviste desde linea de comandos o por el pgadmin ??
prueba con
show client_encoding;
desde linea de comandos y pgadmin para saber tu client_encoding.
Alvaro: Mi client_encoding me sale UNICODE desde pgadmin y LATIN1
desde linea de comandos. Pero igual no se puede hacer upper de la
letra eñe en ninguno de los 2 escenarios.
Paolo.
On 4/21/06, Jaime Casanova <systemguards(at)gmail(dot)com> wrote:
> On 4/21/06, Paolo Lopez <murphyperu(at)gmail(dot)com> wrote:
> > Hola a todos los miembros de la lista.
> >
> > Tengo un problema con respecto al ILIKE pero solo con la letra eñe.
> > Anteriormente ya tenía problemas con la eñe pero lo solucioné al crear
> > la BD con enconding = LATIN1.
> >
> > El ejemplo es el siguiente:
> >
> > CREATE TABLE PERSONA (
> > idPersona SERIAL NOT NULL,
> > nombres TEXT NULL,
> > apPaterno TEXT NULL,
> > apMaterno TEXT NULL,
> > PRIMARY KEY (idPersona)
> > );
> >
> > insert into PERSONA values ( DEFAULT , 'juaN' , 'muÑante' , 'ruiZ' );
> >
> >
> > Cuando se quiere hacer las siguientes consultas :
> >
> > 1) select * from persona
> > where apPaterno ILIKE 'muñante' ;
> >
> > se obtiene 0 lineas
> >
> >
> > 2) select * from persona
> > where apPaterno ILIKE 'MUÑANTE' ;
> >
> > se obtiene la unica linea insertada
> >
> >
> > 3) select * from persona
> > where apPaterno ILIKE 'muÑante' ;
> >
> > se obtiene la unica linea insertada
> >
> >
> > Los resultados son iguales en potgres 7.4 con cygwin en windows , asi
> > como en postgres 8.1.3 en windows XP.
> >
> >
> > Alguna idea de por que solo la eñe se escapa del ILIKE ???
> >
> >
>
> no puedo reproducir tu problema, los 3 selects muestran la fila ingresada.
> windows xp
> postgresql-8.1.3
>
> database encoding latin1 aunque no tengo idea de cual sera el client_encoding
>
> --
> Atentamente,
> Jaime Casanova
>
> "What they (MySQL) lose in usability, they gain back in benchmarks, and that's
> all that matters: getting the wrong answer really fast."
> Randal L. Schwartz
>
From: | "Jaime Casanova" <systemguards(at)gmail(dot)com> |
---|---|
To: | "Paolo Lopez" <murphyperu(at)gmail(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Problema ILIKE con letra eñe |
Date: | 2006-04-22 13:43:50 |
Message-ID: | c2d9e70e0604220643q303e4899xe3d22cacde11ef76@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
On 4/22/06, Paolo Lopez <murphyperu(at)gmail(dot)com> wrote:
> Jaime: Gracias por probar el ejemplo, pero los resultados del select
> los obtuviste desde linea de comandos o por el pgadmin ??
>
me declarare culpable, hice las pruebas con el pgAdmin
rehaciendo las pruebas en psql ninguno de los 3 selects devuelve la fila...
y al ver la fila desde el psql, la muestra asi:
prueba=# select * from persona;
idpersona | nombres | appaterno | apmaterno
-----------+---------+-----------+-----------
1 | juaN | muÐante | ruiZ
(1 fila)
claro que el dato lo ingrese desde el pgAdmin, pero no deberia haber
hecho recodificacion de UNICODE a LATIN1 para guardarlo en la base?
server_encoding: LATIN1
client_encoding en psql: LATIN1
client_encoding en pgAdmin: UNICODE
al actualizar la fila con la letra ñ grabada desde el psql, reproduzco
el error de Paolo en el que ILIKE considera diferentes a 'ñ' y 'Ñ'
> prueba con
>
> show client_encoding;
>
> desde linea de comandos y pgadmin para saber tu client_encoding.
>
parezco novato, verdad?
asi que en teoria en el psql deberia tener garantizado que salga bien
>
> Alvaro: Mi client_encoding me sale UNICODE desde pgadmin y LATIN1
> desde linea de comandos. Pero igual no se puede hacer upper de la
> letra eñe en ninguno de los 2 escenarios.
>
>
ni upper ni lower, sin embargo el problema lo veo exclusivamente en
psql (LATIN1 a LATIN1)
prueba:
select lower('Ñ');
select upper('ñ');
en ambos lados
--
Atentamente,
Jaime Casanova
"What they (MySQL) lose in usability, they gain back in benchmarks, and that's
all that matters: getting the wrong answer really fast."
Randal L. Schwartz
From: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
---|---|
To: | Jaime Casanova <systemguards(at)gmail(dot)com> |
Cc: | Paolo Lopez <murphyperu(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Problema ILIKE con letra eñe |
Date: | 2006-04-22 15:22:38 |
Message-ID: | 20060422152238.GA12686@surnet.cl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
Jaime Casanova escribió:
> On 4/22/06, Paolo Lopez <murphyperu(at)gmail(dot)com> wrote:
> > Jaime: Gracias por probar el ejemplo, pero los resultados del select
> > los obtuviste desde linea de comandos o por el pgadmin ??
> >
>
> me declarare culpable, hice las pruebas con el pgAdmin
>
> rehaciendo las pruebas en psql ninguno de los 3 selects devuelve la fila...
>
> y al ver la fila desde el psql, la muestra asi:
>
> prueba=# select * from persona;
> idpersona | nombres | appaterno | apmaterno
> -----------+---------+-----------+-----------
> 1 | juaN | muÐante | ruiZ
> (1 fila)
Ojo! El client_encoding tiene que estar definido correctamente en ambos
casos, tanto al ingresar la tupla como al extraerla. Para que el
upper() funcione correctamente, lo importante es que el ingreso haya
sido correcto.
--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support
From: | "Jaime Casanova" <systemguards(at)gmail(dot)com> |
---|---|
To: | "Jaime Casanova" <systemguards(at)gmail(dot)com>, "Paolo Lopez" <murphyperu(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Problema ILIKE con letra eñe |
Date: | 2006-04-22 16:04:38 |
Message-ID: | c2d9e70e0604220904o7dc164b4va39322431870c262@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
On 4/22/06, Alvaro Herrera <alvherre(at)commandprompt(dot)com> wrote:
> Jaime Casanova escribió:
> > On 4/22/06, Paolo Lopez <murphyperu(at)gmail(dot)com> wrote:
> > > Jaime: Gracias por probar el ejemplo, pero los resultados del select
> > > los obtuviste desde linea de comandos o por el pgadmin ??
> > >
> >
> > me declarare culpable, hice las pruebas con el pgAdmin
> >
> > rehaciendo las pruebas en psql ninguno de los 3 selects devuelve la fila...
> >
> > y al ver la fila desde el psql, la muestra asi:
> >
> > prueba=# select * from persona;
> > idpersona | nombres | appaterno | apmaterno
> > -----------+---------+-----------+-----------
> > 1 | juaN | muÐante | ruiZ
> > (1 fila)
>
> Ojo! El client_encoding tiene que estar definido correctamente en ambos
> casos, tanto al ingresar la tupla como al extraerla. Para que el
> upper() funcione correctamente, lo importante es que el ingreso haya
> sido correcto.
>
> --
> Alvaro Herrera http://www.CommandPrompt.com/
> PostgreSQL Replication, Consulting, Custom Development, 24x7 support
>
Lo se...
prueba=# insert into persona values (default, 'Alicia', 'Oñate', 'nose');
INSERT 0 1
prueba=# select * from persona where appaterno ILIKE 'OÑATE';
idpersona | nombres | appaterno | apmaterno
-----------+---------+-----------+-----------
(0 filas)
prueba=# select * from persona where appaterno ILIKE 'OñATE';
idpersona | nombres | appaterno | apmaterno
-----------+---------+-----------+-----------
2 | Alicia | Oñate | nose
(1 fila)
prueba=# select * from persona where lower(appaterno) LIKE lower('OÑATE');
idpersona | nombres | appaterno | apmaterno
-----------+---------+-----------+-----------
(0 filas)
prueba=# show server_encoding;
server_encoding
-----------------
LATIN1
(1 fila)
prueba=# show client_encoding;
client_encoding
-----------------
LATIN1
(1 fila)
prueba=# \l
Listado de base de datos
Nombre | Due±o | Codificaci¾n
-----------+----------+--------------
bench | postgres | LATIN1
postgres | postgres | LATIN1
prueba | postgres | LATIN1
template0 | postgres | LATIN1
template1 | postgres | LATIN1
(5 filas)
de todos modos desconfio por la forma en que se muestran caracteres latinos...
quiza tenga que ver con el locale?
el locale que estoy usando es uno propio de windows Spanish_Ecuador.28591
e internamente el acceso directo al psql establece el codigo de pagina
1252... no se si algo de esto servira
--
Atentamente,
Jaime Casanova
"What they (MySQL) lose in usability, they gain back in benchmarks, and that's
all that matters: getting the wrong answer really fast."
Randal L. Schwartz
From: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
---|---|
To: | Jaime Casanova <systemguards(at)gmail(dot)com> |
Cc: | Paolo Lopez <murphyperu(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Problema ILIKE con letra eñe |
Date: | 2006-04-22 17:38:19 |
Message-ID: | 20060422173819.GC12686@surnet.cl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
Jaime Casanova escribió:
> e internamente el acceso directo al psql establece el codigo de pagina
> 1252... no se si algo de esto servira
Que pasa si haces un SET client_encoding TO win1252?
--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.
From: | "Paolo Lopez" <murphyperu(at)gmail(dot)com> |
---|---|
To: | "Jaime Casanova" <systemguards(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Problema ILIKE con letra eñe |
Date: | 2006-04-22 18:06:37 |
Message-ID: | ab97ec200604221106h75dbf0c7kd8b3d35757f32e53@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
En mi caso desde el psql obtengo lo siguiente :
prueba=# show server_encoding;
server_encoding
-----------------
LATIN1
(1 row)
prueba=# show client_encoding;
client_encoding
-----------------
LATIN1
(1 row)
prueba=# \l
List of databases
Name | Owner | Encoding
----------------------+--------+-----------
Paul | IRVINE | LATIN1
postgres | IRVINE | SQL_ASCII
prueba | IRVINE | LATIN1
template0 | IRVINE | SQL_ASCII
template1 | IRVINE | SQL_ASCII
(5 rows)
El problema me parece no es en como se guarda los datos ya que
AFIRMATIVAMENTE se guarda los caracteres eñe minuscula o mayuscula, el
problema esta en las funciones upper y lower solo para ese caracter.
Leyendo los manuales del postgres en pgadmin, en el capitulo
21.1. Locale Support
dice lo siguiente :
21.1.2. Behavior
The locale settings influence the following SQL features:
Sort order in queries using ORDER BY on textual data
The ability to use indexes with LIKE clauses
The upper, lower, and initcap functions
The to_char family of functions
Ademas de que tambien he leido ( no recuerdo en este momento ) que el
locale C es el mas estable a manera generica.
En mi caso obtengo lo siguiente :
prueba=# show LC_COLLATE;
lc_collate
------------
C
(1 row)
prueba=# show LC_CTYPE;
lc_ctype
----------
C
(1 row)
Alguna idea de lo del LOCALE ?? puede ser este el problema ??
Alvaro : he probado lo que sugieres y me sale lo siguiente :
prueba=# SET client_encoding TO win1252;
ERROR: conversion between win1252 and LATIN1 is not supported
Paolo.
On 4/22/06, Alvaro Herrera <alvherre(at)commandprompt(dot)com> wrote:
> Jaime Casanova escribió:
>
> > e internamente el acceso directo al psql establece el codigo de pagina
> > 1252... no se si algo de esto servira
>
> Que pasa si haces un SET client_encoding TO win1252?
>
> --
> Alvaro Herrera http://www.CommandPrompt.com/
> The PostgreSQL Company - Command Prompt, Inc.
>
From: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
---|---|
To: | Paolo Lopez <murphyperu(at)gmail(dot)com> |
Cc: | Jaime Casanova <systemguards(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Problema ILIKE con letra eñe |
Date: | 2006-04-22 20:25:46 |
Message-ID: | 20060422202546.GF12686@surnet.cl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
Paolo Lopez escribió:
> El problema me parece no es en como se guarda los datos ya que
> AFIRMATIVAMENTE se guarda los caracteres eñe minuscula o mayuscula, el
> problema esta en las funciones upper y lower solo para ese caracter.
Ja. Si fuera tan simple, el problema ya estaria resuelto.
Me sorprende que no se pueda hacer conversion entre win1252 y Latin1.
Estuve mirando las definiciones en
http://www.microsoft.com/globaldev/reference/iso/28591.mspx
(iso-8859-1, a.k.a. Latin-1)
y
http://www.microsoft.com/globaldev/reference/sbcs/1252.mspx
(Win1252)
y se ven bastante equivalentes.
Yo personalmente nunca he tenido problemas con esto porque no uso
Windows, pero los afectados podrian hacer un analisis mas exhaustivo.
Este empieza por entender que simplemente pegando en el email el
"caracter raro" otra persona no tiene como saber lo que esta pasando.
La informacion tiene que venir de una forma que no sufra reconversion de
caracteres. Por ejemplo "en vez de la eñe viene una letra que parece
una yuxtaposición de una D con una E".
--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.
From: | "Jaime Casanova" <systemguards(at)gmail(dot)com> |
---|---|
To: | "Paolo Lopez" <murphyperu(at)gmail(dot)com>, "Jaime Casanova" <systemguards(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Problema ILIKE con letra eñe |
Date: | 2006-04-22 21:07:42 |
Message-ID: | c2d9e70e0604221407n1ff0fbcdp890345e829f70205@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
On 4/22/06, Alvaro Herrera <alvherre(at)commandprompt(dot)com> wrote:
> Paolo Lopez escribió:
>
> > El problema me parece no es en como se guarda los datos ya que
> > AFIRMATIVAMENTE se guarda los caracteres eñe minuscula o mayuscula, el
> > problema esta en las funciones upper y lower solo para ese caracter.
>
> Ja. Si fuera tan simple, el problema ya estaria resuelto.
>
> Me sorprende que no se pueda hacer conversion entre win1252 y Latin1.
> Estuve mirando las definiciones en
> http://www.microsoft.com/globaldev/reference/iso/28591.mspx
> (iso-8859-1, a.k.a. Latin-1)
>
> y
> http://www.microsoft.com/globaldev/reference/sbcs/1252.mspx
> (Win1252)
>
> y se ven bastante equivalentes.
>
voy a mirar un poco esos enlaces para ver si saco algo en claro...
> Yo personalmente nunca he tenido problemas con esto porque no uso
> Windows, pero los afectados podrian hacer un analisis mas exhaustivo.
> Este empieza por entender que simplemente pegando en el email el
> "caracter raro" otra persona no tiene como saber lo que esta pasando.
> La informacion tiene que venir de una forma que no sufra reconversion de
> caracteres. Por ejemplo "en vez de la eñe viene una letra que parece
> una yuxtaposición de una D con una E".
>
exactamente el mismo caracter que me muestra cuando inserto en el
pgAdmin3 y lo selecciono desde el psql
por ahora no me ha afectado porque de todos modos siempre trabajo
desde el pgAdmin3 o vb...
--
Atentamente,
Jaime Casanova
"What they (MySQL) lose in usability, they gain back in benchmarks, and that's
all that matters: getting the wrong answer really fast."
Randal L. Schwartz
From: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
---|---|
To: | Jaime Casanova <systemguards(at)gmail(dot)com> |
Cc: | Paolo Lopez <murphyperu(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Problema ILIKE con letra eñe |
Date: | 2006-04-22 23:42:04 |
Message-ID: | 20060422234204.GI12686@surnet.cl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
Jaime Casanova escribió:
> On 4/22/06, Alvaro Herrera <alvherre(at)commandprompt(dot)com> wrote:
> > Yo personalmente nunca he tenido problemas con esto porque no uso
> > Windows, pero los afectados podrian hacer un analisis mas exhaustivo.
> > Este empieza por entender que simplemente pegando en el email el
> > "caracter raro" otra persona no tiene como saber lo que esta pasando.
> > La informacion tiene que venir de una forma que no sufra reconversion de
> > caracteres. Por ejemplo "en vez de la eñe viene una letra que parece
> > una yuxtaposición de una D con una E".
>
> exactamente el mismo caracter que me muestra cuando inserto en el
> pgAdmin3 y lo selecciono desde el psql
Interesante. Observa que en el CP "OEM 850"[1], el byte D1 representa
el caracter Unicode "U+00D0" (LATIN CAPITAL LETTER ETH), mientras que en
iso-8859-1[2] el byte D1 representa U+00D1 (LATIN CAPITAL LETTER N WITH
TILDE).
Por lo tanto me atrevo a afirmar que lo que sucede es que uno de los dos
programas esta usando cp850 (probablemente pgAdmin3) y el otro Latin1,
pero no estan declarados correctamente en el client_encoding.
Ahora, se me ocurre que cp850 no esta soportado como charset en
Postgres ...
[1] http://www.microsoft.com/globaldev/reference/oem/850.mspx
[2] http://www.microsoft.com/globaldev/reference/iso/28591.mspx
--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support
From: | "Paolo Lopez" <murphyperu(at)gmail(dot)com> |
---|---|
To: | "Jaime Casanova" <systemguards(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Problema ILIKE con letra eñe |
Date: | 2006-04-25 07:00:06 |
Message-ID: | ab97ec200604250000k6d7ffa09wda30265d2709ed2c@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
He estado haciendo algunas pruebas para ver si es que el problema del
ILIKE , UPPER y LOWER tienen que ver con el LOCALE y no con el
server_encoding y client_encoding.
Durante la instalacion de la version 8.1.3 para windows al momento de
pedirme los datos en initdb antes seleccionaba LOCALE = C , ahora lo
he cambiado por LOCALE = Spanish_Peru.
Corriendo el ejemplo que he publicado antes:
CREATE TABLE PERSONA (
idPersona SERIAL NOT NULL,
nombres TEXT NULL,
apPaterno TEXT NULL,
apMaterno TEXT NULL,
PRIMARY KEY (idPersona)
);
insert into PERSONA values ( DEFAULT , 'juaN' , 'muÑante' , 'ruiZ' );
para las consultas:
select * from persona
where apPaterno ILIKE 'muñante' ;
select * from persona
where apPaterno ILIKE 'MUÑANTE' ;
select * from persona
where apPaterno ILIKE 'muÑante' ;
me esta arrojando ahora si el resultado correcto que es la unica linea
de la tabla.
Jaime: He tratado de reproducir tu ejemplo y con tu LOCALE =
Spanish_Ecuador y no he tenido los problemas que dices.
>
> prueba=# insert into persona values (default, 'Alicia', 'Oñate', 'nose');
> INSERT 0 1
> prueba=# select * from persona where appaterno ILIKE 'OÑATE';
> idpersona | nombres | appaterno | apmaterno
> -----------+---------+-----------+-----------
> (0 filas)
>
> prueba=# select * from persona where appaterno ILIKE 'OñATE';
> idpersona | nombres | appaterno | apmaterno
> -----------+---------+-----------+-----------
> 2 | Alicia | Oñate | nose
> (1 fila)
>
> prueba=# select * from persona where lower(appaterno) LIKE lower('OÑATE');
> idpersona | nombres | appaterno | apmaterno
> -----------+---------+-----------+-----------
> (0 filas)
>
Ademas probando tu ejemplo para mi LOCALE = Spanish_Peru los
resultados que se obtienen tambien son correctos.
Otra cosa que he encontado durante las pruebas que he efectuado. Al
momento de instalar postgres en windows, cuando se me pide los datos
en initdb, intenté:
1) LOCALE = C
SERVER ENCONDIG = UTF8
el show lc_collate devuelve C
2) LOCALE = C
SERVER ENCONDIG = Latin1
el show lc_collate devuelve C
3) LOCALE = Spanish_Peru
SERVER ENCONDIG = UTF8
el show lc_collate devuelve Spanish_Mexico.1252
4) LOCALE = Spanish_Peru
SERVER ENCONDIG = Latin1
el show lc_collate devuelve Spanish_Peru.28591
5) LOCALE = Greek
SERVER ENCONDIG = UTF8
el show lc_collate devuelve Spanish_Mexico.1252
6) LOCALE = Spanish_Ecuador
SERVER ENCONDIG = Latin1
el show lc_collate devuelve Spanish_Ecuador.28591
Para 1) y 2) siempre "show lc_collate" devuelve C, pero he notado que
de 3) a 6) si se escoge SERVER ENCONDIG = UTF8 me devuelve "show
lc_collate" el codigo de mi windows que es Spanish_Mexico.1252, pero
cuando se escoge SERVER ENCONDIG = Latin1 siempre "show lc_collate"
devuelve LOCALE_ELEGIDO.28591
Alguien sabe el porque de este comportamiento ???
Hasta el momento LOCALE = C durante la instalacion parece ser el
problema para ILIKE , UPPER y LOWER, pero por favor intenten ustedes
para las comprobaciones correspondientes.
Paolo.