Penso che questo sia un bug di Pg.
A mio parere, PostgreSQL dovrebbe normalizzare utf-8 in una forma precomposta prima di eseguire conversioni di codifica. Il risultato delle conversioni mostrate è errato.
Lo solleverò su pgsql-bugs ... fatto.
http://www.postgresql.org/message-id/example @sqldat.com
Dovresti essere in grado di seguire il thread lì.
Modifica :pgsql-hacker non sembra essere d'accordo, quindi è improbabile che cambi in fretta. Ti consiglio vivamente di normalizzare il tuo UTF-8 ai limiti di input dell'applicazione.
A proposito, questo può essere semplificato fino a:
regress=> SELECT 'á' = 'á';
?column?
----------
f
(1 row)
che è semplicemente un discorso pazzesco, ma è permesso. Il primo è precomposto, il secondo no. (Per vedere questo risultato dovrai copiare e incollare e funzionerà solo se il tuo browser o terminale non normalizza utf-8).
Se stai usando Firefox potresti non vedere correttamente quanto sopra; Chrome lo rende correttamente. Ecco cosa dovresti vedere se il tuo browser gestisce correttamente Unicode decomposto: