使用Spring-MVC / Java保存中文字符

时间:2010-11-30 21:07:07

标签: java html spring spring-mvc

我正在尝试将中文字符从表单提交保存到数据库中。

我已经通过

在jsp上设置了contentType
<%@ page contentType="text/html;charset=UTF-8" %>

我还在jsp:

中设置了这个标签
<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8" />

但是,当我提交表单时,我的控制器会看到与我输入的字符不同的字符。

我正在进入角色我看到æ??在控制器中。当数据在页面上重新显示时,它显示相同的错误字符(æ??)。

为什么控制器没有正确的字符?

3 个答案:

答案 0 :(得分:3)

在任何其他过滤器之前在web.xml文件中声明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>

在你的jsp文件中,尝试在文件的最开头添加它:

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

答案 1 :(得分:1)

并非所有浏览器都会尊重您在页面或表单中指定的字符集。 Spring提供了一个过滤器CharacterEncodingFilter,它可以添加字符编码或强制特定编码,因为请求进入并且在它到达控制器之前。

答案 2 :(得分:0)

在表单中添加accept-charset属性:

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

这告诉浏览器将表单内容作为UTF-8提交给服务器。