我在春季项目中遇到编码问题。现在我用-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代码。 如何解决?
答案 0 :(得分:0)
如果要将数据保存到数据库中,在此之前,正常视图中的数据,请检查数据库编码,即:
CREATE DATABASE table DEFAULT CHARACTER SET 'utf8' DEFAULT COLLATE 'utf8_unicode_ci';
另外,请检查URL表,即:
jdbc:mysql://localhost:3306/table?useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC"
如果问题没有将数据保存到数据库,请尝试在jsp中设置行:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
在极端情况下,建议在json中使用ajax,设置任何编码。