当前位置: 首页 > 知识库问答 >
问题:

Spring HTML 代码代替 ISO-8859-1 编码

赵佐
2023-03-14

我在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ł保存为aaal[am]#322;[上午]#322;[上午]#322;我写[是]而不是&符号。

我检查了一下[am]#322; is超文本标记语言代码的字母。如何修复它?

共有1个答案

翟越
2023-03-14

如果您要将数据保存到数据库,在此之前,将数据保存在正常视图中,请检查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" %>

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

 类似资料:
  • 主要内容:ISO-8859-1,HTML 预留字符,ISO 8859-1 字符实体现代的浏览器支持的字符集: ASCII 字符集 标准 ISO 字符集 数学符号、希腊字母、其他符号 ISO-8859-1 ISO-8859-1 是大多数浏览器默认的字符集。 ISO-8859-1 的较低部分(从 1 到 127 之间的代码)是最初的 ASCII 字符集(0-9 的数字,大写和小写英文字母表,以及一些特殊字符)。 ISO-8859-1 的较高部分(从 160 到 255 之间的代码)

  • Unicode是ISO-8859-1的超集,因此前256个Unicode字符对应于ISO-8859-1。

  • 问题内容: 我在评论 @Esailija回答我的一个问题时读到 ISO-8859-1是唯一完全保留原始二进制数据的编码,其字节<->代码点精确匹配 我也在@AaronDigulla的这个答案中读到: 在Java中,ISO-8859-1(也称为ISO-Latin1)是1:1映射 我需要对此有一些了解。这将失败: 问题 我承认我不太了解它- 为什么它没有得到上面代码中的字节 ? 最重要的是, 这是哪里

  • 我在Java应用程序中遇到字符串编码的问题。我的Informix数据库有ISO-8859-2编码。我在连接字符串中设置了。我的连接URL如下所示: 从数据库中选择数据后,Java字符串不能识别波兰特殊字符。方法返回代码。

  • 问题内容: 我有一个编码为iso-8859-1的文件,其中包含诸如ô的字符。 我正在用Java代码读取此文件,例如: 但是ô字符总是乱码,通常打印为?。。 我已经读过这个主题(并且在途中学到了一点),例如 http://www.joelonsoftware.com/articles/Unicode.html http://bugs.sun.com/bugdatabase/view_bug.do?b

  • 我有一个Android应用程序,它读取带有SQL脚本的文件,将数据插入SQLite数据库。然而,我需要知道这个文件的详细编码,我有一个从SQLite读取信息的EditText,如果编码不正确,它将显示为无效字符,如“?”而不是像“ç,í,ã”这样的字符。 我有以下代码: 这适用于“ISO-8859-1”编码,如果我将“UTF-8”设置为字符集,则适用于UTF-8。我需要以编程方式检测字符集编码(U