602SQL-Úplná dokumentace Index  

wb_set_client_encoding

PHP

boolean wb_set_client_encoding( resource connection, int encoding_id )


Parametry

connection
Otevřené spojení na 602SQL server (tuto hodnotu vrací funkce wb_connect, nebo wb_pconnect). Povinný parametr.
encoding_id
ID kódování, které se má nastavit. Musí to být jedna z konstant WB_ENC_xxx. Povinný parametr.


Popis

Tato funkce nastavuje:

Lze nastavit jedno z následujících kódování:

Toto nastavení se uplatní při provádění SQL příkazu, který obsahuje odkazy na PHP proměnné (host variables - uvozené pomocí :<> nebo dynamické parametry označené otazníkem v prepared příkazech) s texty (tj. PHP proměnné typu string), pomocí funkce wb_exec resp. wb_psql_execute. Pokud bude při provádění SQL příkazu nastaveno kódování WB_ENC_UTF8, budou hodnoty PHP proměnných typu string, které jsou použity v SQL příkazu, zkonvertovány z kódování UTF-8 do kódování UCS-2 a v tomto kódování budou předány SQL serveru. 602SQL server totiž nepodporuje kódování UTF-8, ale pouze UCS-2.

Dále je toto nastavení uplatněno při provádění funkce wb_lob_write. Pokud je nastaveno WB_ENC_UTF8, pak se data před zápisem do NCLOBu (Unicode text proměnné délky) zkonvertují z kódování UTF-8 do kódování UCS-2.

Pokud je nastaveno jedno z kódování WB_ENC_ASCII, WB_ENC_WIN1250, WB_ENC_WIN1252, WB_ENC_ISO_8859_2, pak při zápisu řetězce do sloupce, nebo dynamického parametru typu NCHAR, resp. NCLOB (Unicode řetězec pevné délky, resp. Unicode text proměnné délky) bude tento řetězec zkonvertován do kódování UCS-2 a zapsán.

Toto nastavení se neuplatňuje při čtení hodnot z databáze pomocí wb_result, resp. wb_fetch_into, ani se neuplatňuje při předávání PHP proměnných, které nejsou typu string. Neuplatňuje se ani při volání funkce wb_lob_read.



Návratová hodnota

TRUE při úspěchu, FALSE při chybě (když kódování, které má být nastaveno, není podporováno).



Příklad

Zapsání řetězce v kódování UTF-8 do sloupce typu NCHAR :

/* nechť v proměnné $str je řetězec v kódování UTF-8,
   který chceme zapsat do sloupce UNI_STR v tabulce UNI_TABLE */
// nejdříve nastavíme kódování PHP proměnných s texty, které budeme předávat do SQL příkazu
wb_set_client_encoding($connection , WB_ENC_UTF8);
// a hodnota proměnné $str bude předána SQL serveru v kódování UCS-2
wb_exec($connection,"INSERT INTO UNI_TABLE(UNI_STR) VALUES(:<str);"); 
// pokud chceme nyní předávat do SQL příkazů PHP proměnné s texty v kódování ASCII,
// musíme změnit kódování
wb_set_client_encoding($connection,WB_ENC_ASCII);
// a můžeme provést SQL příkazy


Příklad

Zapsání řetězce v kódování Windows CP 1250 do sloupce typu NCHAR:

// předpokládáme, že tento zdrojový text je napsán v kódování Windows CP 1250            
$str="příliš žluťoučký kůň úpěl ďábelské ódy";
// nastavíme kódování Windows CP 1250
wb_set_client_encoding($connection, WB_ENC_WIN1250);
// připravíme SQL příkaz
$stmt=wb_psql_prepare($connection, "INSERT INTO UNI_TABLE(UNI_STR) VALUES(?);");
// provedeme SQL příkaz
wb_psql_execute($stmt, $str);
// můžeme nastavit původní kódování
wb_set_client_encoding($connection, WB_ENC_ASCII);

Viz