2013-07-24 52 views
5

Tôi gặp sự cố với mã hóa UTF-8 của mình. Webapp của tôi sử dụng các từ tiếng Pháp được hiển thị chính xác trong jsp của tôi, nhưng không phải trong bộ điều khiển của tôi sau POST. Ví dụ, trong jsp của tôi, tôi có:Hình thức và bộ điều khiển mùa xuân UTF-8 mã hóa kém

Prénom de mon père

và khi tôi gửi hình thức, bộ điều khiển được:

Pra © nom de mon Pa re

Ký tựEncodingFilter là bộ lọc đầu tiên trong tệp như được mô tả trong this post

Đây là jsp của tôi:

<%@ 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 của tôi:

<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> 

Và tôi xin-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> 

Tôi không biết có gì sai trong ứng dụng của tôi hoặc cấu hình của tôi, bạn có ý tưởng gì không?

Cảm ơn trước.

EDIT: Tôi đang sử dụng HDIV khuôn khổ

+0

Điều gì về việc thêm "<% @ page language =" java "contentType =" text/html; charset = UTF-8 "pageEncoding =" UTF-8 "%>" trên jsp? – Hippoom

+0

Xong, nhưng tôi không đề cập đến nó. Tôi đã chỉnh sửa bài đăng của mình – thibon

Trả lời

2

Sự cố này thực sự đến từ phiên bản khung HDIV 2.1.2. Bản vá có sẵn here nếu bạn không thể sử dụng bản phát hành tiếp theo.

Hy vọng nó sẽ giúp ai đó.

1

Đảm bảo trang JSP mã hóa dữ liệu gửi đến máy chủ đúng cách. Hãy thử thêm

<%@page pageEncoding="UTF-8" %> 

lên đầu JSP của bạn vì điều này đảm bảo mọi dữ liệu được gửi cùng http sẽ được mã hóa chính xác.

Tôi tin rằng mã hóa http mặc định là ISO-8859-1.

+0

Dòng này đã có trong tệp jsp của tôi. Làm cách nào để thay đổi mã hóa http mặc định trên bài đăng? – thibon

+0

Nó không phải trước khi bạn chỉnh sửa nó! Thông thường với một hình thức đơn giản, bạn có thể làm một cái gì đó như

không chắc chắn với một thẻ hình thức mùa xuân. –