PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Normalizzazione Unicode in Postgres

Penso che questo sia un bug di Pg.

A mio parere, PostgreSQL dovrebbe normalizzare utf-8 in una forma precomposta prima di eseguire conversioni di codifica. Il risultato delle conversioni mostrate è errato.

Lo solleverò su pgsql-bugs ... fatto.

http://www.postgresql.org/message-id/example @sqldat.com

Dovresti essere in grado di seguire il thread lì.

Modifica :pgsql-hacker non sembra essere d'accordo, quindi è improbabile che cambi in fretta. Ti consiglio vivamente di normalizzare il tuo UTF-8 ai limiti di input dell'applicazione.

A proposito, questo può essere semplificato fino a:

regress=> SELECT 'á' = 'á';
 ?column? 
----------
 f
(1 row)

che è semplicemente un discorso pazzesco, ma è permesso. Il primo è precomposto, il secondo no. (Per vedere questo risultato dovrai copiare e incollare e funzionerà solo se il tuo browser o terminale non normalizza utf-8).

Se stai usando Firefox potresti non vedere correttamente quanto sopra; Chrome lo rende correttamente. Ecco cosa dovresti vedere se il tuo browser gestisce correttamente Unicode decomposto: