Kodovani v psql
Karel Zak
zakkr na zf.jcu.cz
Pátek Srpen 30 13:40:33 CEST 2002
On Fri, Aug 30, 2002 at 01:21:35PM +0200, "Zíka Aleš, Ing." wrote:
> Diky, ten jsem cetl, je perfektni. Ale me jde o to, ze v popisu psql
> je jeste popsan meta-prikaz \encoding [kodova_stranka] ktery take nastavuje
> kodovani.
> Empiricky jsem zjistil ze kdyz pouziju ten, nastavi se prislusne i
> hodnota promenne CLIENT_ENCODING a samozrejme i kodovani klienta, kdyz
> pouziju SET CLIENT_ENCODING, tak se kodovani klienta take nastavi, ale
> \encoding bez parametru vypisuje puvodni kodovani (tedy spatne).
>
> Tak jsem chtěl vedet, jaky zpusob je nejlepsi pouzivat (vlastně se
> tedy nabizeji tri - SET CLIENT_ENCODING, PGCLIENTENCODING a \encoding) a
> jestli nektery neskryva nejakou zradu (zpusob SET CLIENT_ENCODING se mi jevi
> jako podezrely, protoze zrejme nenastavuje nejakou vnitrni promennou psql).
Mate pravdu. Proto jsem vam odpovedel, protoze jsem na to v tom
clanku zapomel :-)
Obecne existuje:
* SET CLIENT_ENCODING
* PQsetClientEncoding() coz je funkce v libpq, ktera posle ten SET
prikaz na server a nastavi hodnotu kterou je schopna ta knihovna
vracet pri zavolani PQclientEncoding() jinak to ta knihovna nevyuziva.
* promenna prostredi PGCLIENTENCODING
- knihovna libpq ji detekuje a zavola opet PQsetClientEncoding()
Trosku jine je to u psql klienta, protoze ten potrebuje znat pouzivane
kodovani tak ma svuj prikaz \encoding (jinak by musel parsovat SQL
prikazy a zjistit, ze jste poslal SET CLIENT_ENCODING).
Pokud pouzijete PGCLIENTENCODING tak si to psql klient zjisti a je to
totez jako \encoding. IMHO je to nejlepsi metoda nastaveni protoze,
je obecna vsem klientum.
Karel
PS. bylo nejake FAQ, pridal by to tam nekdo? Dik :-)
--
Karel Zak <zakkr na zf.jcu.cz>
http://home.zf.jcu.cz/~zakkr/
C, PostgreSQL, PHP, WWW, http://docs.linux.cz, http://mape.jcu.cz
Další informace o konferenci Test