Jeg tror, det er en Pg-fejl.
Efter min mening bør PostgreSQL normalisere utf-8 til prækomponeret form, før der udføres kodningskonverteringer. Resultatet af de viste konverteringer er forkert.
Jeg vil hæve det på pgsql-bugs ... færdig.
http://www.postgresql.org/message-id/example @sqldat.com
Du burde kunne følge tråden der.
Rediger :pgsql-hackere ser ikke ud til at være enige, så det er usandsynligt, at det ændrer sig i en fart. Jeg anbefaler dig på det kraftigste at normalisere din UTF-8 ved dine applikationsinputgrænser.
BTW, dette kan forenkles ned til:
regress=> SELECT 'á' = 'á';
?column?
----------
f
(1 row)
hvilket er almindelig crazy-talk, men er tilladt. Den første er prækomponeret, den anden er ikke. (For at se dette resultat skal du kopiere og indsætte, og det vil kun fungere, hvis din browser eller terminal ikke normaliserer utf-8).
Hvis du bruger Firefox, ser du muligvis ikke ovenstående korrekt; Chrome gengiver det korrekt. Her er hvad du skal se, hvis din browser håndterer dekomponeret Unicode korrekt: