2010-03-03 72 views
0

我想为我正在开发的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" /> 
.... 

,并在我的瓷砖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" /> 
... 

我检查日食,这种文件有UTF- 8编码。 虽然JSP的其余部分是正确的(例如插入到标题中的JSP片段),但在页面中传递的单词不能正确显示(重音字符以错误的方式显示)。如果我将编码更改为ISO-8859-1,则标题正常,但其余的页面错误。看来我无法在我的瓷砖文件中将编码更改为UTF-8。我也在我创建的文件中查找“ISO-8859-1”,并且我没有在任何文件中设置此配置。

谁能告诉我如何设置瓷砖的正确编码?

感谢

回答

3

这是与字符集有问题,不与编码。我必须设置

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

在每个JSP和它的工作。我不知道在Spring Web应用程序的所有JSP中是否有更简单的配置方法。

1

另一种方式可能是使用 ReloadableResourceBundleMessageSource(使用属性defaultEncoding =“UTF-8”)也适用于从瓦片插入的内容。

我的意思是,你可以通过从瓷砖的关键字,并从资源包使用输出需要的内容,就像这样:

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

'<属性名= “defaultEncoding” 值= “UTF-8”/>'为我工作! – naXa 2015-05-14 21:18:38

8

添加以下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> 
+1

这个答案应该在顶部,因为它像一个魅力一样工作,并且比在每个jsp中指定charset好得多。 – 2013-08-21 13:39:20