Jag tror att detta är ett Pg-fel.
Enligt min åsikt borde PostgreSQL normalisera utf-8 till förkomponerad form innan kodningskonverteringar utförs. Resultatet av de visade omvandlingarna är felaktiga.
Jag tar upp det på pgsql-bugs ... klart.
http://www.postgresql.org/message-id/example @sqldat.com
Du borde kunna följa tråden där.
Redigera :pgsql-hackers verkar inte hålla med, så det är osannolikt att detta kommer att ändras i en hast. Jag rekommenderar starkt att du normaliserar din UTF-8 vid dina programinmatningsgränser.
BTW, detta kan förenklas ner till:
regress=> SELECT 'á' = 'á';
?column?
----------
f
(1 row)
vilket är rent crazy-talk, men är tillåtet. Den första är förkomponerad, den andra inte. (För att se det här resultatet måste du kopiera och klistra in, och det fungerar bara om din webbläsare eller terminal inte normaliserar utf-8).
Om du använder Firefox kanske du inte ser ovanstående korrekt; Chrome återger det korrekt. Här är vad du bör se om din webbläsare hanterar sönderdelad Unicode korrekt: