Ich habe ein Problem mit UTF-8 in der Java-Servlet-Datei. Wenn ich den Parameterwert in der URL erhalte, habe ich ein Problem mit UTF-8-Zeichen. Japanische Schriftzeichen werden nicht richtig angezeigt.
Jsp Header hat bereits
%Vor%Ich habe die URIEncoding-Einstellung im Connector zu UTF-8 in server.xml hinzugefügt.
%Vor%Ich schrieb den Code wie folgt in jsp.
%Vor%Und dann schrieb ich den Code wie folgt in Java-Servlet.
%Vor% Ich habe auch mit request.setCharacterEncoding()
Methode im Java Servlet getestet, aber es funktioniert nicht wirklich.
Obwohl ich viele Möglichkeiten aus Antworten auf das Problem der anderen Leute im Zusammenhang mit Zeichenkodierung in Servlet in Stackoverflow versuchte, kann ich mein Problem nicht lösen, bis.
Was kann ich tun, um die Zeichencodierung korrekt anzuzeigen? Vielen Dank im Voraus.
Die meisten Server, einschließlich des Apache Tomcat-Servers, sind standardmäßig so konfiguriert, dass sie die Parametercodierung mit ISO-8859-1
ausführen. Ich denke, dass Sie das nicht ändern werden, wenn Sie keine private dedizierte Serverinstanz haben. Die Technik des Programmierers besteht also darin, diese Parameter manuell zu codieren / zu decodieren. Da Sie Javascript verwenden, gibt es die integrierte Funktion encodeURI()
oder encodeURIComponent()
. Siehe Wie Sie eine URL in JavaScript codieren . Der Code sollte sich ändern
in Java verwenden Sie den Parameter URLDecoder
, um den Parameter zurück zu dekodieren.
Hinweis: Wenn Sie Struts2 dispatcher
result type verwenden, müssen Sie die Parameter in der Abfragezeichenfolge nicht dekodieren. Diese Parameter werden über UrlHelper
analysiert.
Allerdings erinnere ich mich nicht, wenn ich diese Parameter dekodieren werden automatisch in Struts2 dekodiert.
Als Regel sollten Sie wissen, dass wenn Sie Parameter in der URL übergeben, sie URL-codiert sein sollten. Wenn Sie das Formular abschicken, müssen Sie es nicht tun, da das Formular x-www-form-urlencoded
lautet, siehe 17.13.4 Inhaltstypen erstellen .
Testen Sie die Ausgabe mit System.out.println
? Wenn dies der Fall ist, ist es möglicherweise nicht für UTF-8 konfiguriert.
Siehe hierzu: Sonderzeichen (UTF-8) kann nicht von JSP an Servlet gesendet werden: Es werden Fragezeichen angezeigt
Stellen Sie außerdem sicher, dass Sie request.setCharacterEncoding("UTF-8")
ausführen, BEVOR Sie die Parameter lesen.
Tags und Links java character-encoding jsp servlets struts2