我的UTF-8编码有问题。我的webapp使用在我的jsp中正确显示的法语单词,但在POST后不在我的控制器中。 例如,在我的jsp中我有:
Prénomdemonpère
当我发布表单时,控制器得到:
Prénom demonpère
characterEncodingFilter是文件中的第一个过滤器,如this post
中所述这是我的jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!doctype html>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta http-equiv="content-language" content="fr">
...
</head>
<form:form class="form-horizontal" modelAttribute="AlimentationForm"
action="${actionUrl}" method="POST">
...
<form:input path="questions" class='input-xlarge' type='text' value='Prénom de mon père'/>
</form>
我的web.xml:
<filter>
<filter-name>characterEncodingFilter</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>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/web/*</url-pattern>
</filter-mapping>
我的application-config.xml
<beans:bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<beans:property name="basename">
<beans:value>classpath:messages</beans:value>
</beans:property>
<beans:property name="defaultEncoding" value="UTF-8" />
</beans:bean>
我不知道我的应用或配置有什么问题,你知道吗?
提前感谢。
编辑:我正在使用HDIV框架
答案 0 :(得分:2)
这个问题实际上来自HDIV框架版本2.1.2。如果您无法使用下一个版本,则可以使用补丁here。
希望它会对某人有所帮助。
答案 1 :(得分:1)
确保JSP页面正确编码发送到服务器的数据。尝试添加
<%@page pageEncoding="UTF-8" %>
到JSP的顶部,因为这可以确保沿http发送的任何数据都能正确编码。
我认为默认的http编码是ISO-8859-1。