PostgreSQL-databaser har en inbyggd teckentyp, "serverkodning". Det är vanligtvis utf-8.
All text finns i denna kodning. Blandad kodningstext stöds inte, förutom om den lagras som bytea
(d.v.s. som ogenomskinliga bytesekvenser).
Du kan inte lagra "unicode" eller "icke-unicode"-strängar, och PostgreSQL har inget koncept för "varchar" vs "nvarchar". Med utf-8 lagras tecken som faller inom 7-bitars ASCII-intervallet (och några andra) som en enda byte, och bredare tecken kräver mer lagring, så det är bara automatiskt. utf-8 kräver mer lagring än ucs-2 eller utf-16 för text som består av "breda" tecken, men mindre för text som är en blandning.
PostgreSQL konverterar automatiskt till/från klientens textkodning med hjälp av client_encoding
miljö. Det finns inget behov av att konvertera explicit.
Om din klient är "Unicode" (vilket Microsoft-produkter brukar säga när de menar UCS-2 eller UTF-16), så tar de flesta klientdrivrutiner hand om eventuell utf-8 <--> utf-16-konvertering åt dig.
Så du borde inte behöva bry dig så länge som din klient gör I/O med korrekta teckenuppsättningsalternativ och ställer in en korrekt client_encoding
som matchar den data som den faktiskt skickar på tråden. (Detta är automatiskt med de flesta klientdrivrutiner som PgJDBC, nPgSQL eller Unicode psqlODBC-drivrutinen).
Se: