Myslím, že se jedná o chybu Pg.
Podle mého názoru by měl PostgreSQL před provedením převodů kódování normalizovat utf-8 do předem složené podoby. Výsledek zobrazených konverzí je nesprávný.
Uvedu to na pgsql-bugs ... hotovo.
http://www.postgresql.org/message-id/example @sqldat.com
Tam byste měli mít možnost sledovat vlákno.
Upravit :pgsql-hackers s tím zřejmě nesouhlasí, takže je nepravděpodobné, že se to rychle změní. Důrazně vám doporučuji normalizovat UTF-8 na vstupních hranicích vaší aplikace.
BTW, lze to zjednodušit na:
regress=> SELECT 'á' = 'á';
?column?
----------
f
(1 row)
což je obyčejná bláznivá řeč, ale je povolená. První je předem složený, druhý nikoli. (Abyste viděli tento výsledek, musíte jej zkopírovat a vložit a bude fungovat pouze v případě, že váš prohlížeč nebo terminál nenormalizují utf-8).
Pokud používáte Firefox, možná se vám výše uvedené nezobrazuje správně; Chrome to vykresluje správně. Zde je to, co byste měli vidět, pokud váš prohlížeč správně zpracovává rozložený kód Unicode: