我正在尝试将中文字符从表单提交保存到数据库中。
我已经通过
在jsp上设置了contentType<%@ page contentType="text/html;charset=UTF-8" %>
我还在jsp:
中设置了这个标签<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8" />
但是,当我提交表单时,我的控制器会看到与我输入的字符不同的字符。
我正在进入角色我看到æ??在控制器中。当数据在页面上重新显示时,它显示相同的错误字符(æ??)。
为什么控制器没有正确的字符?
答案 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提交给服务器。