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

Come convertire una stringa in unicode usando PostgreSQL?

I database PostgreSQL hanno un tipo di carattere nativo, la "codifica del server". Di solito è utf-8.

Tutto il testo è in questa codifica. Il testo di codifica misto non è supportato, a meno che non sia memorizzato come bytea (cioè come sequenze di byte opache).

Non puoi memorizzare stringhe "unicode" o "non-unicode" e PostgreSQL non ha il concetto di "varchar" vs "nvarchar". Con utf-8, i caratteri che rientrano nell'intervallo ASCII a 7 bit (e alcuni altri) vengono archiviati come un singolo byte e i caratteri più ampi richiedono più spazio di archiviazione, quindi è solo automatico. utf-8 richiede più spazio di archiviazione rispetto a ucs-2 o utf-16 per il testo composto da tutti i caratteri "larghi", ma meno per il testo che è un misto.

PostgreSQL converte automaticamente in/dalla codifica del testo del client, utilizzando il client_encoding ambientazione. Non è necessario convertire in modo esplicito.

Se il tuo client è "Unicode" (che i prodotti Microsoft tendono a dire quando indicano UCS-2 o UTF-16), la maggior parte dei driver client si occupa di qualsiasi conversione utf-8 <--> utf-16 per te.

Quindi non dovresti preoccuparti, a condizione che il tuo client esegua l'I/O con le opzioni di set di caratteri corrette e imposti un client_encoding corretto che corrisponde ai dati che effettivamente invia sul filo. (Questo è automatico con la maggior parte dei driver client come PgJDBC, nPgSQL o il driver Unicode psqlODBC).

Vedi: