Code page problem

Giacomo Restuccia

Code page problem
Un mio cliente ha problemi di trascodifica di caratteri accentati e con
dieresi. La tabella è UNICODE (ccsid 1208) e con datastudio i dati vengono
letti correttamente; però da client PHP la trascodifica è errata.

Qualcuno ha qualche idea che possa aiutare? Grazie a tutti

Giacomo

Ecco i dettagli tecnologici:



Abbiamo attualmente un problema con gli applicativi PHP che si interfacciano
al DB2 su zOS.



Prima ti tutto vorremo sapere se con lo stesso DB2, compreso dei vari layer,
è possibile gestire i dati in diversi Charset (in database differenti o
condivisi).

I dati verranno poi utilizzati in diversi applicativi PHP che utilizzano,
anche loro, dei charset differenti (UTF-8 e ISO-8859-1).



La nostra infrastruttura si basa su:

· PHP 5.5.34 e su Apache v2.2 sotto sistema operativo Suse v11 sp3,
inoltre usiamo i driver ibm_db2 v1.9.6 (link
<https://pecl.php.net/package/ibm_db2/1.9.6> ).

· PHP 5.6.21 e su Apache v2.4 sotto sistema operativo Suse v12,
inoltre usiamo i driver ibm_db2 v1.9.7 (link
<https://pecl.php.net/package/ibm_db2/1.9.7> )



Il client DB2 che usiamo è la versione 10.5, mentre la versione del nostro
DB2 è la 10 r1 (release 1010)



Stiamo sperimentando dei problemi con le connessioni che i vari applicativi
PHP effettuano verso il DB2.

Una volta che queste connessioni vengono inizializzate per la prima volta,
con il code page corretto, rimangono aperte mantenendo il code page
configurato, anche se sono state aperte non persistenti ed inoltre chiuse
dal richiedente.

Il “worker” (connection pool/DRDA ) successivamente le riutilizza per altri
applicativi PHP che si connettono al DB2 utilizzando un charset differente,
ma senza resettare la configurazione del code page.

Generando successivamente dei problemi di decodifica per i caratteri
accentati.



Abbiamo lavorato con la configurazione Lato Applicativi, PHP, Apache e Suse
per la configurazione delle seguenti variabili:

· DB2CODEPAGE (1208 e 819)

· LANG (en_US.UTF-8, POSIX e it_IT.ISO-8859-1)

· LC_ALL (en_US.UTF-8, POSIX e it_IT.ISO-8859-1)

· LANGUAGE (en_US.UTF-8 e it_IT.ISO-8859-1)

Senza alcun risultato