sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur konverterar man sträng till unicode med PostgreSQL?

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:




  1. Om möjligt hur kan man bädda in PostgreSQL?

  2. mysql lagrad procedur, fråga för att kontrollera om det finns eller inte

  3. Få tidigare värde efter uppdatering - MySql

  4. Hur används Reddit och Hacker News rankningsalgoritmer?