Frage

Wir verwenden einen Web-Service, die UTF-8 erwartet. Der Rahmen, den wir auf dem Client verwenden ist Apache Axis2. Wir rufen die Web-Service und die Seife Körper Strings in UTF-8 enthält. Das Problem ist, dass es scheint, als ob der Körper „double kodiert“ ist. Das heißt wir haben den Charakter ‚A‘. Die UTF-8-Darstellung von 'A' in UTF-8 ist C3 A5 jedoch in unserem logs sehen, dass der (Doppel) codierte Wert gesendet C3 C2 83 A5.

Hat jemand similiar Probleme erlebt?

War es hilfreich?

Lösung

Es ist nicht ganz klar, wie Sie den Web-Service sind anrufen. Ist das Verfahren in dem Web-Service in Anspruch nimmt nur einen String? Wenn ja, was macht Ihre Zeichenkette aussieht wie in Java? Alle Strings in Java sind UTF-16 kodierte - wenn Sie die UTF-8 binäre Darstellung in einen String konvertieren durch jedes Byte zu nehmen und es in einen Charakter drehen, dann das ist das Problem

.

Wenn Sie könnten zeigen, was die Methode, die Sie sieht bist Aufruf wie, und wie Sie es anrufen, das würde viel helfen.

Für das, was es wert ist, ich Achse mit Nicht-ASCII-Strings ohne Probleme in der Vergangenheit verwendet habe. Ich vermute stark, das ist ein Problem mit, wie Sie verwenden sie anstatt mit Axis selbst, obwohl ich bereit bin falsch bewiesen werden:)

EDIT: Basierend auf Ihrem Kommentar, es klingt wie Sie Probleme beim Empfang der HTML-Formulardaten haben, bevor Sie die Web-Service-Hit. Wenn der Benutzer „A“ in das Formular eingegeben hat, dann ist das, was Sie sehen sollen, wenn Sie in Eclipse debuggen. Wenn Sie schlechte Daten in Ihren Web-Service setzen sind, ist es kein Wunder, dass Sie schlechte Daten aus am anderen Ende sind immer. Ich schlage vor, Sie laufen Wireshark sehen genau , was der Browser Sie sendet, sowohl in Bezug auf das rohe Bytes und was auch Inhalt Codierung es angibt. Meine Vermutung ist, dass Ihr Webserver als ISO-8859-1 behandelt, aber es ist tatsächlich UTF-8.

Wenn Sie die Zeichenfolge richtig aus dem Formular haben, vermute ich, Sie überhaupt finden werden keine Probleme, die es in den Weitergabe an den Webdienst.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top