これはPgのバグだと思います。
私の意見では、PostgreSQLは、エンコード変換を実行する前に、utf-8を事前に作成された形式に正規化する必要があります。表示されている変換の結果は間違っています。
pgsqlでそれを上げます-バグ...完了。
http://www.postgresql.org/message-id/example @ sqldat.com
そこでスレッドをたどることができるはずです。
編集 :pgsql-hackersは同意していないようですので、急いで変更される可能性は低いです。アプリケーションの入力境界でUTF-8を正規化することを強くお勧めします。
ところで、これは次のように簡略化できます:
regress=> SELECT 'á' = 'á';
?column?
----------
f
(1 row)
これは単純なクレイジートークですが、許可されています。 1つ目は合成済みで、2つ目は合成されていません。 (この結果を表示するには、コピーして貼り付ける必要があります。これは、ブラウザーまたは端末がutf-8を正規化しない場合にのみ機能します。)
Firefoxを使用している場合は、上記が正しく表示されない可能性があります。 Chromeはそれを正しくレンダリングします。ブラウザが分解されたUnicodeを正しく処理するかどうかを確認する必要があります: