sexta-feira, 18 de maio de 2012

to_ascii funcionando no PostgreSQL

Como certa vez disse o Fabrício Lakus Brito, "lower(to_ascii()) é o que há". Infelizmente essa função não funciona mais para bancos de dados com codificação UTF-8 na versão 8.3. Encontrei no blog Florian Helmberger’s blog a descrição da situação que enfrentamos:
In the process of fixing our code for an upcoming upgrade of one database version for one of our $-projects I encountered a strange behaviour. Initiual situation:
  • we're moving from PostgreSQL 8.1.3 to the 8.3.5
  • we're moving from database encoding LATIN1 to UTF8
  • in our code we're using the TO_ASCII function a few times.
And this combination produces some headaches.
A função to_ascii deixou de funcionar. A solução apresentada nesse blog (que já foi pega de uma outra pessoa) foi:

CREATE FUNCTION to_ascii(bytea, name) RETURNS text STRICT AS 'to_ascii_encname' LANGUAGE internal;

Daí eu uso a função assim:

SELECT to_ascii(convert_to('Übermeier', 'latin1'), 'latin1');

Nenhum comentário:

Postar um comentário