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