Je rencontre quelques problèmes avec l'encodage des données dans la page JSP (j'utilise un Spring-MVC). Il ressemble à ceci:Problème d'encodage de page jsp
<%@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>
........
Mon application prend un texte d'une zone de saisie de texte et d'écriture à la base de données (HSQLDB). Quand j'utilise des lettres anglaises pour écrire des données, tout fonctionne bien! Mais quand j'essaye d'employer des lettres russes dans la zone de texte d'entrée, il écrivent quelques lettres étranges sous la forme d'encodage incorrecte. Comment éviter ce problème?
Des idées?
Votre entrée 'Cache-Control' est par ailleurs incomplète (http://stackoverflow.com/questions/49547/making-sure-a-web-page-is-not-cached-across-all- navigateurs/2068407 # 2068407). Cela ne marchera pas dans Firefox, entre autres. De plus, les deux appels de 'setCharacterEncoding()' sont superflus car il est trop tard pour le 'request' et vous avez déjà défini le' pageEncoding' qui fait déjà implicitement le 'response'. – BalusC
Oh ... je ne savais pas à ce sujet. Ainsi, je peux enlever des lignes response.setCharacterEncoding ("UTF-8"); request.setCharacterEncoding ("UTF-8"); ? J'ai essayé de mettre cette ligne ici pour résoudre les problèmes d'encodage. Mais tout n'a pas fonctionné, jusqu'à ce que axtavt ne me donne pas une solution avec le filtre d'encodage Spring. – Ilnur
Comme dit, il est trop tard * pour le mettre sur la demande. Il a déjà été traité (JSP fait partie de la réponse). Il doit arriver * avant * le traitement des demandes et un 'Filter' est le seul endroit approprié pour faire le travail. Pour la réponse, c'est juste une duplication puisque le 'pageEncoding =" UTF-8 "' fait déjà exactement cela sous les couvertures. En passant, la définition des en-têtes de réponse devrait de préférence également se produire dans un filtre. Cela garde vos JSP libres de tout encombrement de duplication de code. Voir aussi [Comment éviter le code Java dans JSP?] (Http://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files). – BalusC