Encoding 瓷砖编码问题

Encoding 瓷砖编码问题,encoding,utf-8,tiles,iso-8859-1,Encoding,Utf 8,Tiles,Iso 8859 1,我正在尝试为我正在开发的Spring应用程序使用UTF-8编码,但在从平铺插入属性时,在获得正确编码方面遇到了问题 我的JSP模板中有以下片段: <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title><tiles:getAsString name="title" /></title> </head

我正在尝试为我正在开发的Spring应用程序使用UTF-8编码,但在从平铺插入属性时,在获得正确编码方面遇到了问题

我的JSP模板中有以下片段:

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
    <title><tiles:getAsString name="title" /></title>   
</head>
<body>
    <tiles:insertAttribute name="header" ignore="true" />
....

....
在我的tiles XML配置文件中,我有如下内容:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE tiles-definitions PUBLIC
   "-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN"
   "http://tiles.apache.org/dtds/tiles-config_2_1.dtd">
<tiles-definitions>
   <definition name="tiles:base" template="/WEB-INF/views/templates/main.jsp">
     <put-attribute name="title" value="Título" />
...

...
我在eclipse中检查了这些文件是否有UTF-8编码。 尽管JSP的其余部分是正确的(例如,插入到页眉中的JSP片段),但在页面中传递的title属性中的单词没有正确显示(重音字符以错误的方式显示)。如果我将编码改为ISO-8859-1,标题就可以了,但页面的其余部分就错了。似乎我无法在tiles文件中将编码更改为UTF-8。我还在我创建的文件中查找“ISO-8859-1”,但我没有在任何文件中设置此配置

有人能告诉我如何为磁贴设置正确的编码吗


谢谢

这是字符集的问题,而不是编码的问题。我必须把它放好

<%@ page contentType="text/html; charset=utf-8"%> 


在每一个JSP中,它都工作了。我不知道是否有更简单的方法可以在SpringWeb应用程序的所有JSP中配置它。

另一种方法可能是使用ReloadableResourceBundleMessageSource(使用属性defaultEncoding=“UTF-8”)也用于从分幅插入的内容

我的意思是,您可以从tiles中传递一个关键字,并使用它从资源包中输出所需的内容,如下所示:

<tiles:useAttribute id="title_key" name="title"/>
<spring:message code="${title_key}"/>

将以下内容添加到
web.xml
。这与在每个JSP文件中添加头具有相同的效果

web.xml:

<web-app>
    ...
    <jsp-config>
        <jsp-property-group>
            <url-pattern>*.jsp</url-pattern>
            <page-encoding>UTF-8</page-encoding>
            <trim-directive-whitespaces>true</trim-directive-whitespaces>
        </jsp-property-group>
    </jsp-config>    
</web-app>

...
*.jsp
UTF-8
真的

在Struts 2.3到2.5的迁移过程中,我遇到了类似的问题: JSP引用的所有javascript.JS文件的内容类型(在响应头中)现在是“application/javascript;charset=ISO-8859-1”(struts 2.5),而不是charset=UTF-8(struts 2.3)。 对于引用js文件的JSP和脚本标记,Charset属性被设置为utf-8

我添加了Leonel的代码,它终于起作用了: 但现在的编码是“text/html;charset=UTF-8”。所以我丢失了应用程序/javascript。它没有正常工作

<web-app>
...
<jsp-config>
    <jsp-property-group>
        <url-pattern>*.js</url-pattern>
        <page-encoding>UTF-8</page-encoding>
        <trim-directive-whitespaces>true</trim-directive-whitespaces>
    </jsp-property-group>
</jsp-config>    
我们需要将过滤器添加到应用程序的web.xml中,以便将其应用于所有请求和响应:

<filter>
 <filter-name>CharacterSetFilter</filter-name>
 <filter-class>com.baeldung.CharacterSetFilter</filter-class>
</filter>

<filter-mapping>
 <filter-name>CharacterSetFilter</filter-name>
 <url-pattern>/*</url-pattern>
</filter-mapping>

字符集过滤器
com.baeldung.CharacterSetFilter
字符集过滤器
/*

这个答案应该排在最前面,因为它就像一个符咒,比在每个jsp中指定字符集要好得多。
对我很有用!
<filter>
 <filter-name>CharacterSetFilter</filter-name>
 <filter-class>com.baeldung.CharacterSetFilter</filter-class>
</filter>

<filter-mapping>
 <filter-name>CharacterSetFilter</filter-name>
 <url-pattern>/*</url-pattern>
</filter-mapping>