From: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> |
---|---|
To: | "Javier A(dot) Villalba" <javier(dot)villalba(at)gmail(dot)com> |
Cc: | PostgreSQL list ES <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Problema ILIKE con UNICODE |
Date: | 2007-11-21 15:02:47 |
Message-ID: | 20071121150247.GI4918@alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Javier A. Villalba escribió:
> Hice mi tarea:
>
> => \encoding latin1
> => \encoding
> LATIN1
>
> => select * from test;
> nombre
> -----------------
> sebasti�n mu
> MAR�A MU�OZ
> (2 rows)
> Ayuda en algo?
Hmmm, me pregunto qué codificación tendrá el terminal ese. ¿Es latin1 o
UTF-8? Por este último resultado sospecho que es UTF-8.
En todo caso algo que no me había percatado es que el servidor es 7.4,
donde la funcionalidad de upper() y lower() solo funcionan en
codificaciones de un byte :-( No funciona en UTF-8. Así que tienes dos
alternativas:
1. actualizar a una versión más reciente, o
2. usar una codificación distinta para la base de datos
Repitiendo tu experimento acá con 7.4 obtengo tus mismos resultados.
Creo que lo que podrías hacer es usar to_ascii() para eliminar los
acentos antes de hacer las búsquedas. Un tropiezo aquí es que no se
puede convertir de UTF8 a ASCII directamente, así que debes hacer un
paso intermedio por Latin1:
alvherre=# select upper(to_ascii(convert('maría muñoz', 'utf8', 'latin1'), 'latin1'));
upper
-------------
MARIA MUNOZ
(1 row)
--
Alvaro Herrera http://www.amazon.com/gp/registry/DXLWNGRJD34J
"La rebeldía es la virtud original del hombre" (Arthur Schopenhauer)
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2007-11-21 15:03:13 | Re: fecha vacia |
Previous Message | Javier A. Villalba | 2007-11-21 14:48:25 | Re: Problema ILIKE con UNICODE |