Re: Conversion UTF8 - WIN1252 en campos binarios ?

From: alvherre <alvherre(at)commandprompt(dot)com>
To: Walter Negro <wnegro(at)vstour(dot)com>
Cc: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Conversion UTF8 - WIN1252 en campos binarios ?
Date: 2010-05-28 14:59:41
Message-ID: 1275058563-sup-6582@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Excerpts from Walter Negro's message of vie may 28 08:00:09 -0400 2010:
> Álvaro,
> Hice nuevas pruebas y decidí enviar el dato bytea configurado como binario.
> Según la documentación, el parámetro paramLengths sólo es tomado en
> cuenta si el dato es enviado con formato binario.
> Algunas veces la documentación puede no ser exactamente lo que ocurre
> internamente por muchas razones, así que me puse a mirar el código de la
> libpq y encontré que si el parámetro no es pasado como binario, la
> librería calcula el largo del string usando la función strlen(). Por lo
> tanto, la única forma de pasar correctamente un dato binario a un campo
> bytea, que pueda contener caracteres nulos, es pasarlo justamente como
> binario.

OK, eso es lo que sospechaba, gracias por confirmarlo.

> Así que la conclusión que saco es que los datos bytea hay que pasarlos
> configurados binario porque si no, el servidor puede hacer conversiones,
> además de ser la única forma de pasar datos binarios que contengan
> caracteres nulos.

Supongo que la otra alternativa es escapar estos datos, usando \000
donde haya caracteres nulos.

¿Has probado usar la biblioteca libpqtypes?
http://libpqtypes.esilo.com/

--
Álvaro Herrera <alvherre(at)commandprompt(dot)com>
The PostgreSQL Company - Command Prompt, Inc.
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2010-05-28 15:03:17 Re: COPY FROM
Previous Message Julio Cesar Rodriguez Dominguez 2010-05-28 14:42:35 Re: Ejecutar select dinamico