【问题标题】:Spring HTML codes instead ISO-8859-1 encodingSpring HTML 代码代替 ISO-8859-1 编码
【发布时间】:2017-01-08 12:41:08
【问题描述】:

我的 spring 项目中的编码有问题。现在我使用 -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[am]#322;[am]#322;[am]#322; 我写 [am] 而不是 & 符号。

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

【问题讨论】:

    标签: spring html encoding


    【解决方案1】:

    如果您正在将数据保存到数据库,并且在此之前是普通视图中的数据,请检查 DB 编码,即:

    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" %>
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      • 2018-02-21
      • 2012-02-17
      • 1970-01-01
      相关资源
      最近更新 更多