Erzwingen Sie die utf8-Codierung beim Aufruf von Knoten nach Java

9

Ich rufe von einer mittleren Ebene der Knoten zu einem Java-Backend auf und übergibt eine Zeichenfolge als Abfrageparameter. Alles funktioniert gut, bis nicht-englisches Alphabet verwendet wird (zB: ø, ý). Wenn Java diese Zeichen empfängt, wird Folgendes ausgelöst:

%Vor%

Dieser Anruf funktioniert einwandfrei:

%Vor%

Dieser Aufruf schlägt mit dem obigen Fehler fehl:

%Vor%

Meine Frage bezieht sich darauf, wo dieses Problem angegangen werden sollte. Ich habe diesen utf8-Encoder für Node gefunden und dachte darüber nach, meine Strings als utf8 zu codieren, bevor ich in Zukunft meine Java-Ebene aufrufen würde. Ist das der richtige Ansatz oder sollte ich etwas in Java machen?

Beachten Sie, dass meine relevanten Anforderungsheader wie folgt aussehen:

%Vor%     
MattDionis 31.08.2016, 14:45
quelle

4 Antworten

1

Speichern Sie Ihre Javascript-Datei in utf8.

%Vor%

Sie können das Protokoll mit GET http://localhost:8000/server/name?name=sořovský anzeigen:

%Vor%     
Hors Sujet 08.09.2016, 15:11
quelle
1

GET unterstützt nur das ASCII-Zeichensatz, um andere Zeichen zu senden, die Sie brauchen, um die speziellen Zeichen Prozent zu kodieren.

    
Nicklas Andersson 08.09.2016 09:00
quelle
0

Es ist möglich, dass der Server utf-8 nicht als Standardcodierung verwendet (wie normalerweise angenommen wird), sondern stattdessen ISO-8859-1 verwendet.

Was erwartet werden kann, wird nicht mit utf-8 decodiert (dies wird nur bei nicht-ASCII-Zeichen offensichtlich sein). Ich hatte ein sehr ähnliches Problem mit einem JBoss-Server.

Die Lösung für mich bestand darin, statt request.getParameter () (das den Parameter automatisch mit utf-8 konvertiert) stattdessen stattdessen zu verwenden:

%Vor%     
Kinnison84 08.09.2016 20:02
quelle
0

Es sieht so aus, als würdest du UTF16 string senden und als UTF-8 behandeln. Alle JavaScript-Zeichenfolgen sind UTF16. So könnte es sein, dass die Params auch als UTF16 eingesendet werden. Sie könnten versuchen, die Parameter über einen UTF16-Encoder auf der Java-Seite der Dinge zu senden und sie dann in die von Ihnen gewünschte Codierung zu konvertieren.

Stellen Sie sicher, dass Sie die Endianz sowie Ihre Maschine überprüfen. Ich hoffe das hilft.

    
dimitrirostavo 09.09.2016 06:33
quelle

Tags und Links