Spring HTML代码而不是ISO-8859-1编码

时间:2017-01-08 12:41:08

标签: spring html5 encoding

我在春季项目中遇到编码问题。现在我用-Dfile.encoding = ISO-8859-1参数运行jvm(tomcat)。在我的.jsp文件中是行:

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

在web.xml中我定义了编码过滤器

<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
       <param-name>encoding</param-name>
       <param-value>ISO-8859-1</param-value>
    </init-param>
    <init-param>
       <param-name>forceEncoding</param-name>
       <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

但是当我传递像łśćżź这样的波兰字母的值时,我有一个问题。在我的java控制器中打印(并保存在DB中)值是用html代码而不是抛光字母。例如

aaalłłł 保存为 的 AAAL [AM]#322; [AM]#322; [AM]#322; 我写[am]而不是&符号。

我检查了[是]#322;是ł字母的HTML代码。 如何解决?

1 个答案:

答案 0 :(得分:0)

如果要将数据保存到数据库中,在此之前,正常视图中的数据,请检查数据库编码,即:

CREATE DATABASE table DEFAULT CHARACTER SET 'utf8' DEFAULT COLLATE 'utf8_unicode_ci';

另外,请检查URL表,即:

jdbc:mysql://localhost:3306/table?useUnicode=true&amp;characterEncoding=UTF-8&amp;characterSetResults=UTF-8&amp;useJDBCCompliantTimezoneShift=true&amp;useLegacyDatetimeCode=false&amp;serverTimezone=UTC"

如果问题没有将数据保存到数据库,请尝试在jsp中设置行:

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

在极端情况下,建议在json中使用ajax,设置任何编码。