J'essaie de soumettre un formulaire, qui a des caractères UTF8 à l'intérieur.
La forme ressemble à ceci: mon serveur est basé sur le printemps. Mon web.xml a déjà le filtre de codage: P> <filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
3 Réponses :
Je vous suggère de supprimer le caractèreCodingfilter, qui peut être lui-même la cause du double codage. P>
Pour déboguer la SITUATION, vous devez d'abord vérifier si le navigateur affiche les données correctement. Utilisez Firebug (pour Firefox) ou des outils de développeurs sur Chrome (F12) P>
Très probablement, le problème est au niveau du serveur. Quel serveur utilisez-vous? Si vous utilisez Tomcat, vous devez définir le caractère CharseCoding sur UTF-8 sur l'élément de connecteur dans serveur.xml p>
Il semble très probable que le problème soit le forcentable que vous définissez. Selon le docs a > p>
Ce filtre peut soit appliquer son codage si la demande ne
spécifier déjà un codage ou appliquer le codage de ce filtre dans n'importe quel
cas («forcoding» = «vrai») p>
blockQuote>
Lorsque vous faites un get, il n'y a pas de codage spécifié, il est donc logique que cela fonctionne. P>
Toutefois, lorsque vous faites le message, le codage est déjà appliqué et puis (il semble) est appliqué à nouveau à cause du forcercoding = true p>
J'ai vérifié Firebug tout va bien. Si je viens de faire une demande d'obtention au lieu de poster, tout fonctionne.
Non, ce filtre n'encore rien, il définit simplement le codage de la demande en tant que UTF8. Qui est en fait la bonne chose à faire.
J'ai posté la solution. Truc est de monter le filtre de codage en haut.
Avez-vous une entrée de mappage de filtre dans votre web.xml pour encodingfilter?
<filter-mapping> <filter-name>EncodingFilter</filter-name> <url-pattern>*</url-pattern> </filter-mapping>
On dirait que les navigateurs n'envoient pas le charert dans le cadre des en-têtes de demande de contenu (même lorsque l'acceptation-Charset sur le formulaire est défini) et Tomcat traite du corps de telles demandes que la latine-1 (Http://wiki.apache.org/tomcat/faq/characterencoding#q1 ). P>
Donc, à un point ultérieur, cela aurait peut-être été décodé comme latin-1 et codé comme UTF-8 entraînant des caractères grassé. P>
Caractéristençage en mouvementFilter en haut et forçant le codage à définir comme UTF-8 a résolu le problème. P>
De nombreux problèmes liés, mais le problème réel était avec l'ordre des filtres dans web.xml