Newsgroup: it.comp.www.php
Titolo: php+oracle+utf8

Ciao a tutti,
Il DB e' oracle, eseguo la connessione da PHP e una stupida SELECT, che deve 
ritornare una colonna con caratteri UTF-8, salvata correttamente.
Da sqldeveloper la query viene eseguita correttamente, da PHP (con header 
UTF-8) ho una serie di punti di domanda al posto dei caratteri, in questo 
caso greci.
Mi sfugge qualcosa?
Grazie 


Prima di tutto far funzionare una pagina .html con caratteri UTF-8 e poi 
pensare a PHP e ORACLE
 

*Davide* ha scritto:

http://www.joelonsoftware.com/articles/Unicode.html
"So I have an announcement to make: if you are a programmer working in 2003 and
you don't know the basics of characters, character sets, encodings, and Unicode,
and I catch you, I'm going to punish you by making you peel onions for 6 months in a submarine.
I swear I will."
:)


You think, you have all the reasons of this world.
I spent 3 hours to discover the problem, because I thought that it comes 
from PHP+ORACLE instead was a lack on our Apache web-server!
Thanks for the link! 

 Thanks for the link! 
ehm ... guarda che quotavo una parte del testo linkato
(andavo di fretta)
in breve se visualizzi e salvi dentro il db in utf-8 non hai problemi
di sorta

 (andavo di fretta)
ROTFL :-)))) 


:)
Adesso la pagina htm viene visualizzata correttamente.
Nel DB il campo e' inserito correttamente (manualmente con una INSERT, per 
ora), ma quando vado a visualizzare la pagina vedo comunque la serie di ????
anche non utilizzando PEAR:
Il valore di NLS_CHARACTERSET = AL32UTF8
Qualche idea?
Codice di test:
header('content-type: text/html; charset=utf-8');
function dump_array($a_value)
{
       reset($a_value);
       for ( $s_str = '' ; list($s_key, $x_value) = each($a_value) ;  )
       {
           $s_str .= "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".
                     "<span style=\"color:green\">[</span>$s_key<span 
style=\"color:green\">]</span> = ".
                     "<span style=\"color:red\">[</span>$x_value<span 
style=\"color:red\">]</span><br />";
       }
       reset($a_value);
       echo $s_str;
}
$ORACLE_SID = getenv("ORACLE_SID");
$ORACLE_HOME = getenv("ORACLE_HOME");
echo "ORACLE_SID = $ORACLE_SID<br>";
echo "ORACLE_HOME = $ORACLE_HOME<br>";
if ($cn=OCILogon("", "", "")) {
  echo "Successfully connected to Oracle.\n";
} else {
  $err = OCIError();
  echo "Oracle Connect Error " . $err[text];
}
echo "cn = $cn<br />\n";
$st = ociparse($cn, "select tbl_XX.txt_XX from tbl_XX where id_XX=25");
echo "st = $st<br />\n";
$ex = ociexecute($st,OCI_COMMIT_ON_SUCCESS);
echo "ex = $ex<br />\n";
$mr = ocifetchinto($st,$xx,OCI_ASSOC);
while ( $mr )
{
    dump_array($xx);
    $mr = ocifetchinto($st,$xx,OCI_ASSOC);
}
$fr = ocifreestatement($st);
echo "fr = $fr<br />";
ocicommit($cn);
ocilogoff($cn);

 ***
Ciao,
Praticamente funziona!
Se eseguo il codice della INSERT da sqldeveloper non viene vista 
correttamente dalla pagine WEB di visualizza.
Se eseguo la pagina di inserimento dati da WEB e poi la pagina di 
visualizzazione articolo tutto si vede correttamente, pero' se da 
sqldeveloper eseguo l'SQL di SELECT il campo non e' visualizzato 
correttamente, perche'?
Grazie!

*Davide* ha scritto:

  mi spiace ma non conosco sqldeveloper comunque se
inserisci e visualizzi in UTF-8 non hai problemi

 inserisci e visualizzi in UTF-8 non hai problemi
Ciao,
Esatto e' cosi'!
Avrei una ulteriore domanda alla quale non riesco a dare risposta.
Utilizzo PEAR DB e in Oracle il campo di testo e' di tipo VARCHAR2, perche' 
le oci8 non supportano i tipi *clob, confermi questo?
Il VARCHAR2 ha il limite di 4000, che e'  veramente poco per il mio utilizzo 
[1/2 OT] come posso risolvere questo?
Grazie ancora! 

 le oci8 non supportano i tipi *clob, confermi questo?
non uso oracle posta su it.comp.software.database