2010-03-03 73 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