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 Databases