Spring 3 MVC:如何从表单中存储€符号?

时间:2010-07-12 12:22:13

标签: java spring spring-mvc character-encoding

我使用Spring 3 MVC和MySQL 5作为我的数据库。

我使用Spring表单标签创建了一个表单,用于更新数据库中的对象。

我在此表单的一个文本输入字段中输入“票价:€35”并保存该项目。然后,当我在显示页面中查看该项目时,文本显示为“票价:?35”。

如果我使用MySql查询浏览器直接在数据库中输入“票价:€35”,则欧元符号在显示页面中显示正常。

我需要做什么才能让我的Spring表单正确地将欧元符号保存到数据库中?


更新

嗨,我试过你的建议,Bozho,没有运气..我的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>/*</url-pattern>
</filter-mapping>




<servlet>
    <servlet-name>baseApp</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>baseApp</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

还有什么想法?

2 个答案:

答案 0 :(得分:2)

使用弹簧字符编码过滤器。在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>

并将其映射到默认servlet

然后,您的MySQL连接字符串应如下所示:

jdbc:mysql://localhost/dbName?characterEncoding=utf8

答案 1 :(得分:0)

您必须确保包含€的字符串的编码设置为正确的编码(与您的表相同)。我建议使用UTF-8