PostgreSQL-databaser har en indbygget karaktertype, "serverkodningen". Det er normalt utf-8.
Al tekst er i denne kodning. Blandet kodningstekst understøttes ikke, undtagen hvis den er gemt som bytea
(dvs. som uigennemsigtige byte-sekvenser).
Du kan ikke gemme "unicode" eller "ikke-unicode" strenge, og PostgreSQL har intet begreb om "varchar" vs "nvarchar". Med utf-8 bliver tegn, der falder i 7-bit ASCII-området (og nogle andre) gemt som en enkelt byte, og bredere tegn kræver mere lagerplads, så det er bare automatisk. utf-8 kræver mere lagerplads end ucs-2 eller utf-16 for tekst, der alle er "brede" tegn, men mindre for tekst, der er en blanding.
PostgreSQL konverterer automatisk til/fra klientens tekstkodning ved hjælp af client_encoding
indstilling. Det er ikke nødvendigt at konvertere eksplicit.
Hvis din klient er "Unicode" (hvilket Microsoft-produkter plejer at sige, når de betyder UCS-2 eller UTF-16), så tager de fleste klientdrivere sig af enhver utf-8 <--> utf-16 konvertering for dig.
Så du burde ikke være ligeglad, så længe din klient udfører I/O med korrekte tegnsætindstillinger og indstiller en korrekt client_encoding
der matcher de data, den faktisk sender på ledningen. (Dette er automatisk med de fleste klientdrivere som PgJDBC, nPgSQL eller Unicode psqlODBC-driveren).
Se: