Domanda

Usiamo un servizio web che si aspetta UTF-8. Il quadro che usiamo sul client è Apache Axis2. Chiamiamo il servizio web e il corpo di sapone contiene stringhe in UTF-8. Il problema è che sembra che il corpo è "doppio codificato". Cioè abbiamo il carattere 'A'. La rappresentazione UTF-8 di 'A' in utf-8 è C3 A5 però che vediamo nei nostri registri che la (doppia) valore codificato inviato è C3 83 C2 A5.

Qualcuno ha avuto problemi la classica?

È stato utile?

Soluzione

Non è del tutto chiaro come si sta chiamando il servizio web. Il metodo di nel servizio Web basta prendere una stringa? Se è così, che cosa fa la stringa di assomigliare in Java? Tutte le stringhe in Java sono UTF-16 codificato - se si sta convertendo la rappresentazione binaria UTF-8 in una stringa prendendo ogni byte e trasformandolo in un personaggio, allora questo è il problema

.

Se si potesse mostrare ciò che il metodo che si sta chiamando sembra, e come si sta chiamando, che aiuterebbe molto.

Per quello che vale, ho usato asse con le stringhe non ASCII senza alcun problema in passato. Ho il forte sospetto che questo è un problema di come si sta utilizzando, piuttosto che con Axis per sé, anche se io sono disposto a essere smentito:)

EDIT: Sulla base di un commento, sembra che tu hai problemi ricevere i dati del modulo HTML, prima di colpire il servizio web. Se l'utente ha digitato "A" nella forma, allora questo è ciò che si dovrebbe vedere quando si esegue il debug in Eclipse. Se avete deciso di mettere i dati cattivi nel vostro servizio web, non c'è da meravigliarsi che stai ricevendo i dati cattivi fuori all'altra estremità. Vi suggerisco di eseguire WireShark vedere esattamente ciò che il browser che si sta inviando, sia in termini di i byte di base e anche ciò codifica del contenuto è specifica. La mia ipotesi è che il server web sta trattando come ISO-8859-1, ma in realtà è UTF-8.

Una volta che hai la stringa correttamente dal modulo, ho il sospetto che vi troverete sono problemi a tutti nel trasmetterla al servizio Web.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top