用特殊字符表示字符编码问题

时间:2010-04-24 18:25:10

标签: java html forms jsp encoding

您好我有一个带有html表单的jsp。

我设置了这样的内容类型:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %>

当我发送特殊字符如áéíóú时,它们会在数据库中正确保存。我的桌子字符集是utf-8。

我想将iso-8859更改为utf-8,以便标准化我的应用程序并接受更多特殊字符:

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

但是当我将其更改为utf-8时,特殊字符áéíóú在数据库中无法正确保存。当我尝试保存á时,它保存为á

在服务器端,我正在使用Spring MVC。我得到的文本字段值如下:

String strField = ServletRequestUtils.getStringParameter(request,
                    "field");

1 个答案:

答案 0 :(得分:4)

当您的网页不是ISO-8859-1时,您需要在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>