我使用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>
还有什么想法?
答案 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