Caros

    Recentemente tive problemas com uma aplicação que funcionava em um 
banco LATIN1 mas dava problemas em um banco UTF-8. Depois de pesquisar 
um pouco detectei o seguinte comportamento no PG.

    1) Num banco criado como LATIN1:

postgres=# \l
        List of databases
   Name    |   Owner   | Encoding
-----------+-----------+----------
 xpto  | xxxadm | LATIN1
 postgres  | postgres  | LATIN1
 template0 | postgres  | LATIN1
 template1 | postgres  | LATIN1
(4 rows)

postgres=# \c xpto
You are now connected to database "xpto".
xpto=# select UPPER('a');
 upper
-------
 A
(1 row)

xpto=# select UPPER('á');
 upper
-------
 Á
(1 row)

 2) Num banco criado como UTF8:

postgres=# \l
        List of databases
   Name    |   Owner   | Encoding
-----------+-----------+----------
 xpto  | xxxadm | LATIN1
 postgres  | postgres  | UTF8
 template0 | postgres  | UTF8
 template1 | postgres  | UTF8
(4 rows)

postgres=# \c xpto
You are now connected to database "xpto".
xpto=# select UPPER('a');
 upper
-------
 A
(1 row)

xpto=# select UPPER('á');
 upper
-------
  á
(1 row)

   O problema é que no segundo caso a aplicação dá erro porque usa UPPER 
e LOWER nas queries, que retornam com problemas. O mesmo problema ocorre 
se o banco "xpto" está em UTF8. A solução foi transferir o UPPER e LOWER 
para a aplicação e retirar da query.

   Pergunta: o comportamento dessas funções não deveria seguir o 
encoding do banco ao qual se está conectado?

-- 
Benedito A. Cruz
Centro de Referência em Informação Ambiental - CRIA
email [email protected]
fone 55 19 3288 0466 


-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.

_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a