首页 文章

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

提问于
浏览
0

你好,我有一个带有html表单的jsp .

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

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

当我发送特殊字符如áéíóú时,它们会在数据库中正确保存 . 我的 table 字符集是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 回答

  • 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>
    

相关问题