Ribamar Sousa wrote:

>>  Se seu banco esta' em UTF8, sua aplicacao tem que enviar UTF8.
>>
Não necessariamente. A aplicação tem que enviar os dados na mesma 
codificação do 'client_encoding'.

>>  Tens que se certificar que seu PHP esta' enviando UTF8. Que o PHP esta
>>  dizendo ao navegador que o encoding e' UTF8. Veja a documentacao do
>>  PHP.
> 
Isso você pode verificar com [1] e ajustar em [2].

> Acontece que então não devo ter entendido a conversão automática, onde
> diz que em estando o servidor com utf8 converterá automaticamente de
> clientes em qualquer codificação.
> 

Vamos ver se graficamente você entende:

+-----------+        +--------+          +-----------+
|    (1)    |   (a)  |   (2)  |    (b)   |    (3)    |
| servidor  |<------>| liqpq  |<-------->| aplicação |
|   utf-8   |        | latin1 |          | *latin1*  |
+-----------+        +--------+          +-----------+

O passo (a), indica a conversão que o PostgreSQL faz de uma codificação 
(2) para outra (1); elas *não* precisam ser necessariamente a mesma. O 
PostgreSQL só consegue fazê-la porque ele sabe a priori quais são as 
codificações de ambos os lados. É claro que caracteres que não tem 
correspondência na outra codificação *não* poderão ser convertidos.
No passo (b), *você* (desenvolvedor) tem que garantir que os dados 
informados na aplicação (3) estão na mesma codificação de (2). A não 
correspondência da codificação de (2) e (3) acarreta em uma entrada 
inválida de dados. Em (2) há um mecanismo (aka client_encoding) de 
informar qual será a codificação utilizada em (2) e (3).


[1] http://www.php.net/manual/pt_BR/function.pg-client-encoding.php
[2] http://www.php.net/manual/pt_BR/function.pg-set-client-encoding.php


-- 
   Euler Taveira de Oliveira
   http://www.timbira.com/
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a