UTF8 & Web Services

Salve a tutti sto creando un client per collegarmi al servizio gratuito di gestione dei curriculum EuroCv.eu .

Il programma che sto realizzando richiama un web service messo a disposizione dal servizio. Cercando di recuperare i dati il risultato è alle volte errato per via della codifica dei caratteri inviati in utf8 ma interpretati dal mio client non correttamente.

Sono sicuro che il server invii i dati correttamente perchè un altro client disponibile all'indirizzo: http://www.soapclient.com/soapclient?template=%2Fclientform.html&fn=soapform&SoapTemplate=%2FSoapResult.html&SoapWSDL=http%3A%2F%2Fapi.eurocv.eu%2Feuroserver.php%3Fwsdl&_ArraySize=2 si connette correttamente al webservice e scarica le stesse informazioni ma con i caratteri corretti.

Ho realizzato una paginetta su netsons per farvi vedere cosa capita: http://jobs.netsons.org/

Non so che fare. Potete aiutarmi?

Grazie

Ulisse  :bye:

inviato 9 anni fa
ulisse
modificato 9 anni fa
X 0 X

cosa usi per realizzare il client? Non potrebbe trattarsi solo di un problema di visualizzazione, nel senso che la pagina che mostra i dati estratti non specifica il set di caratteri utilizzato?

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Uso NUSOAP come client per la connessione.

Come puoi vedere nella pagina i dati non arrivano direttamente in utf8 ma mi toccherebbe decodificarli e ciò è male.

grazie  :bye:

risposto 9 anni fa
ulisse
X 0 X

nusoap è molto collaudata quindi mi sembra strano che ci siano questi problemi. Hai provato a fare qualche ricerca su internet?

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

si ho fatto molte ricerche su internet ma non ho trovato molte risposte in merito all'UTF-8.

function Fetch($section, $name, $packet) {
        $client = new soapclientw('http://api.eurocv.eu/euroserver.php?wsdl', true);
        $err = $client->getError();
        $client->soap_defencoding = 'UTF-8';
        $client->decodeUTF8(false);
        if ($err) {
            return 'Constructor error ' . $err;
        }

        $result = $client->call($section, array($name => $packet));
      echo '<h2>Response</h2>';
      echo '<pre>' . htmlspecialchars($client->response, ENT_QUOTES) . '</pre>';
      
        if ($client->fault) {
            return $result;
        } else {
            $err = $client->getError();
            if ($err) {
                return 'Error ' . $err;
            } else {
                if(isset($result) && is_array($result)){
                    return $result;
                }
            }
        }
}

Grazie

 :bye:

risposto 9 anni fa
ulisse
X 0 X

Hai messo nell'instestazione dell'html della pagina il meta sull'UTF-8?

<meta http-equiv="content-type" content="text/html; charset=UTF-8">

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Si ho pure quell'intestazione!

Forse ho capito qual'è il problema.

l'header della pagina deve essere in UTF-8.

Ho inserito come prima riga nella pagina richiamata:

<?header ('Content-type: text/html; charset=utf-8');?>

Vediamo se riesco a completare il client.

Grazie

 :bye:

risposto 9 anni fa
ulisse
X 0 X

RISOLTO!

Nel file che richiama il web service bisogna impostare il CHARSET all'inizio della pagina.

<?header ('Content-type: text/html; charset=utf-8');?>

Ecco tutto.

Grazie mille Gianni

 :bye:

risposto 9 anni fa
ulisse
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda