sql >> Databáze >  >> RDS >> PostgreSQL

Jak převést řetězec na unicode pomocí PostgreSQL?

Databáze PostgreSQL mají nativní typ znaků, „kódování serveru“. Obvykle je to utf-8.

Veškerý text je v tomto kódování. Text se smíšeným kódováním není podporován, pokud není uložen jako bytea (tj. jako neprůhledné bajtové sekvence).

Nemůžete ukládat řetězce "unicode" nebo "non-unicode" a PostgreSQL nemá koncept "varchar" vs "nvarchar". S utf-8 jsou znaky, které spadají do 7bitového rozsahu ASCII (a některé další), uloženy jako jeden bajt a širší znaky vyžadují více úložiště, takže je to prostě automatické. utf-8 vyžaduje více úložného prostoru než ucs-2 nebo utf-16 pro text, který obsahuje všechny „širokoúhlé“ znaky, ale méně pro text, který je smíšený.

PostgreSQL automaticky převádí do/z klientského textového kódování pomocí client_encoding nastavení. Není třeba explicitně převádět.

Pokud je váš klient "Unicode" (což produkty společnosti Microsoft mají tendenci říkat, když mají na mysli UCS-2 nebo UTF-16), většina klientských ovladačů se postará o jakoukoli konverzi utf-8 <--> utf-16 za vás.

Takže by vás to nemělo zajímat, pokud váš klient provádí I/O se správnými možnostmi znakové sady a nastavuje správné client_encoding která odpovídají datům, která skutečně odesílá po drátě. (Toto je automatické u většiny klientských ovladačů, jako je PgJDBC, nPgSQL nebo ovladač Unicode psqlODBC).

Viz:




  1. Postgres CASE prohlášení v příloze

  2. Výběr z databáze na základě seznamu jedinečných párů

  3. Hardwarové trendy databázového serveru

  4. Provedení mySQL dotazu v metodě jQuery.Post