Ich behalte einige Probleme mit der Codierung von Daten in JSP-Seite (ich verwende eine Spring-MVC). Es sieht wie folgt aus:Jsp Seitencodierung Problem
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%
response.setHeader("Cache-Control", "no-cache"); //HTTP 1.1
response.setHeader("Pragma", "no-cache"); //HTTP 1.0
response.setDateHeader("Expires", 0);
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
.....
<form method="post">
<input type="text" name="txt" value="${Name}" />
<input type="submit" value= OK />
</form>
........
Meine app nimmt einen Text aus Texteingabefeld und schreiben Sie es auf die Datenbank (HSQLDB). Wenn ich englische Buchstaben verwende, um Daten zu schreiben, funktioniert alles gut! Aber wenn ich versuche, russische Buchstaben im Eingabefeld zu verwenden, schreibe ich seltsame Buchstaben in falscher Kodierung. Wie vermeide ich dieses Problem?
Irgendwelche Ideen?
Ihr 'Cache-Control'-Eintrag ist übrigens [unvollständig] (http://stackoverflow.com/questions/49547/making-sure-a-web-page-is-not-cached-across-all- Browser/2068407 # 2068407). Es funktioniert unter anderem nicht in Firefox. Auch die beiden 'setCharacterEncoding()' Aufrufe sind überflüssig, da es für die 'request'-Datei zu spät ist und Sie bereits die' pageEncoding' gesetzt haben, die bereits implizit die 'response'-Funktion übernimmt. – BalusC
Oh ... Ich wusste es nicht. So kann ich Zeilen response.setCharacterEncoding ("UTF-8") entfernen; request.setCharacterEncoding ("UTF-8"); ? Ich habe versucht, diese Zeile hier zu setzen, um Probleme mit der Codierung zu lösen. Aber alles hat nicht funktioniert, bis axtavt gibt mir keine Lösung mit Spring Encoding Filter. – Ilnur
Wie gesagt, es ist * zu spät * um es auf die Anfrage einzustellen. Es wurde bereits verarbeitet (JSP ist Teil der Antwort). Es muss passieren * vor * Anfrage Verarbeitung und ein 'Filter 'ist der einzige richtige Ort, um die Arbeit zu machen. Für die Antwort ist es nur Duplizierung, da das 'pageEncoding =" UTF-8 "' genau das unter den Deckeln tut. Die Einstellung der Antwortheader sollte übrigens vorzugsweise auch in einem Filter erfolgen. Dadurch bleiben Ihre JSPs frei von Code-Duplikation. Siehe auch [Wie vermeidet man Java-Code in JSP?] (Http://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files). – BalusC