Мисля, че това е грешка в Pg.
По мое мнение PostgreSQL трябва да нормализира utf-8 в предварително съставена форма, преди да извърши конвертиране на кодиране. Резултатът от показаните реализации е грешен.
Ще го повдигна на pgsql-bugs ... готово.
http://www.postgresql.org/message-id/example @sqldat.com
Трябва да можете да следвате нишката там.
Редактиране :pgsql-hackers изглежда не е съгласен, така че това е малко вероятно да се промени набързо. Горещо ви съветвам да нормализирате вашия UTF-8 в границите на входа на вашето приложение.
Между другото, това може да се опрости до:
regress=> SELECT 'á' = 'á';
?column?
----------
f
(1 row)
което е обикновена лудост, но е позволено. Първото е предварително съставено, второто не е. (За да видите този резултат, ще трябва да копирате и поставите и това ще работи само ако браузърът или терминалът ви не нормализират utf-8).
Ако използвате Firefox, може да не видите горното правилно; Chrome го изобразява правилно. Ето какво трябва да видите, ако вашият браузър обработва правилно декомпозиран Unicode: