Je pense que c'est un bogue de Pg.
À mon avis, PostgreSQL devrait normaliser utf-8 sous une forme pré-composée avant d'effectuer des conversions d'encodage. Le résultat des conversions affichées est erroné.
Je vais le soulever sur pgsql-bugs ... c'est fait.
http://www.postgresql.org/message-id/example @sqldat.com
Vous devriez pouvoir suivre le fil là-bas.
Modifier :pgsql-hackers ne semble pas d'accord, il est donc peu probable que cela change rapidement. Je vous conseille fortement de normaliser votre UTF-8 aux limites d'entrée de votre application.
BTW, cela peut être simplifié jusqu'à :
regress=> SELECT 'á' = 'á';
?column?
----------
f
(1 row)
ce qui est un pur discours fou, mais qui est autorisé. Le premier est précomposé, le second ne l'est pas. (Pour voir ce résultat, vous devrez copier et coller, et cela ne fonctionnera que si votre navigateur ou votre terminal ne normalise pas l'utf-8).
Si vous utilisez Firefox, vous ne verrez peut-être pas correctement ce qui précède ; Chrome le rend correctement. Voici ce que vous devriez voir si votre navigateur gère correctement l'Unicode décomposé :