【问题标题】:Form character encoding problems with special characters特殊字符的表单字符编码问题
【发布时间】:2011-02-11 22:26:12
【问题描述】:

您好,我有一个带有 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");

【问题讨论】:

    标签: java html forms jsp encoding


    【解决方案1】:

    当你的页面不是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>
    

    【讨论】:

    • 我刚刚将过滤器移到了 web.xml 的开头,它现在可以工作了!!但是我像♫这样的一些特殊字符用问号改变了?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-28
    相关资源
    最近更新 更多