2010-11-30 54 views
1

我試圖從表單提交到數據庫中保存中文字符。用Spring-MVC/Java保存中文字符

我已經通過

<%@ page contentType="text/html;charset=UTF-8" %> 

設置在JSP中的contentType我也設置這個標籤內的JSP:

<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8" /> 

然而,當我提交表單,我控制器會看到與我輸入的字符不同的字符。

我正在進入角色我和看到?在控制器中。當數據重新顯示在頁面上時,它顯示相同的錯誤字符(??)。

爲什麼控制器沒有得到正確的字符?

+1

請訪問http:// stackoverflow.com/questions/4298252/jsp-page-encoding-problem/4298286#4298286 – axtavt 2010-11-30 21:15:37

回答

0

的接受-charset屬性添加到您的窗體:

<form method="POST" accept-charset="utf-8" ... > 

這告訴瀏覽器提交表單的內容爲UTF-8到服務器。

+0

現在它顯示爲「æ」 – Corey 2010-11-30 21:16:23

+0

,帶有兩個塊,而不是問號... – Corey 2010-11-30 21:16:51

+0

此屬性由HTML規範標記爲可選,並被忽略幾乎所有b當charset出現在響應頭文件中時,它是首選的。不要使用它。 – BalusC 2010-12-01 04:14:13

1

並非所有瀏覽器都會遵守您在頁面或表單中指定的字符集。 Spring提供了一個過濾器,CharacterEncodingFilter,它可以添加字符編碼或強制特定的編碼,作爲請求進來並在它到達控制器之前。任何其他過濾器

<filter> 
    <filter-name>charsetFilter</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> 
</filter> 

<filter-mapping> 
    <filter-name>charsetFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

之前在web.xml文件

3

聲明一個CharacterEncodingFilter在JSP文件試圖在文件的最開始添加此:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>