Re: Busqueda con carácteres latinos

From: Sizu <pixradio(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Busqueda con carácteres latinos
Date: 2007-06-26 17:35:14
Message-ID: 60940ad0706261035x29b4028fs804be5c700c69eb3@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Tienes razón. Pude ver directamente en la Base de Datos y, en efecto, se
esta guardando "&oacute" en lugar de "ó".

El problema lo he solucionado pasando la cadena que recibo por la función
htmlentities() de PHP [1], como bien me sugieren tú y "usuario anonimo" que
igual respondió a este mensaje. Muchas gracias a ambos.

Pero no me queda clara una cosa. Igual pasé dicho valor recibido --en
pruebas-- por la función mb_detect_encoding() [2] que me devuelve la
codificación y resultó que mi cadena estaba en UTF8; ¿por qué recibo la
cadena en UTF8 (enviada por POST) si la codificación de la página
(especificada en los metas HTML) es ISO-8859-1?.

[1] http://www.php.net/htmlentities
[2] http://www.php.net/mb_detect_encoding

On 6/26/07, Miguel Rodríguez Penabad <penabad(at)gmail(dot)com> wrote:
>
> El 26/06/07, Sizu <pixradio(at)gmail(dot)com> escribió:
> > Saludos a todos. Quizá esto sea un tanto OFFTOPIC pero espero alguien
> sepa
> > darme una luz.
> >
> > Estoy añadiendo un módulo de búsqueda a una aplicación hecha en PHP. Mi
> > problema es que al enviar una cadena de caracteres latinos no regresa
> > resultados, sin embargo enviándola como HTML sí los encuentra; esto no
> > funciona: "atención"; esto sí funciona: "atenci&oacute;n".
>
> Vamos a ver si te entiendo: En la base de datos hay almacenados textos
> que pueden contener caracteres especiales para HTML (que no latinos,
> porque "<" no es latino y en HTML tienes que poner &lt; a no ser que
> sea para empezar un tag).
>
> Cuando mandas una consulta,
> select ... where campo like '%atención%'
> no funciona, y
> select ... where campo like '%atenci&oacute;n%'
> si que funciona.
>
> Pues entonces, si es así, yo creo que no tiene nada que ver ni con
> postgres, ni encodings, ni siquiera con el gestor de BD que uses.
> El problema es que estás almacenando &oacute; y no ó, por lo que el
> LIKE nunca va a funcionar buscando ó. Lo que yo te sugeriría, y es una
> "chapuza", es que antes de construir la sentencia con el LIKE,
> conviertas la cadena de caracteres con HTMLEncode o HTMLSpecialChars o
> como narices se llame la función :)
> para que transforme la ó en &oacute; ANTES de ejecutar la consulta.
> Eso si, si tienes alguna página almacenada con "ó" no la encontrará.
>
> Saludos
> --
> ---------------------------(fin del mensaje)---------------------------
> TIP 9: visita nuestro canal de IRC #postgresql-es en irc.freenode.net
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Yoel Mc Lennan 2007-06-26 18:57:17 Re: [pgsql-es-ayuda] OT , Obtener ID (PK) dese código VB6 con odbc
Previous Message Jose Cariqueo 2007-06-26 17:16:39 RE: [pgsql-es-ayuda] Conocer el id después de insertar un registro nuevo