2016-02-13 68 views
1

我有一個Java Web應用程序(Webwork),我有一些.jsps顯示一些可以是特殊(UTF-8)字符的數據。例如:傑羅姆·塞拉諾Java UTF-8到JavaScript的特殊字符

的.jsps包括正確的UTF-8標題:

    在我的JSP
  • 我包括 decorator.jsp具有<%@ page pageEncoding="UTF-8" contentType="text/html;charset=utf-8" %>
  • decorator.jsp依次包括一個 meta.jsp它看起來像:
<meta http-equiv="pragma" content="no-cache" /> 
<meta http-equiv="cache-control" content="no-cache" /> 
<meta http-equiv="expires" content="0" /> 
<meta http-equiv="content-type" content="text/html; charset=utf-8" /> 

以.jsp我讀我的數據,如:

<ww:property value="%{content.author}" /> 

,並正確顯示: enter image description here

我嘗試通過字符串JS,使頁面加載後,我做別的事情(比如用戶點擊一個按鈕時調用另一項服務)

<script type="text/javascript" charset="utf-8"> 
var contentData = {}; 
contentData.author = "<ww:property value="%{content.author}" />"; 
alert(contentData.author); 
</script> 

但是在JS中字符不是di正確顯示! enter image description here

那麼,爲什麼當.JSP加載字符正確地呈現,但一旦我們將其傳遞到JS都碎?

回答

0

經過調試,並與這整個晚上掙扎,這裏是我的解決方案: - 而不是從Java寫值直接轉換爲JavaScript的變量,比如:

其中
<script charset="UTF-8"> 
var myName = "<ww:property value="name" />"; 
alert(">>" + myName); 
</script> 

情況下,焦炭的編碼工作不正常。

我把Java值寫入隱藏輸入。這也有自動轉義字符的好處:'(撇號),「(引用)等...

<input id="name_in" type="hidden" value="<ww:property value="name" />"> 
<script> 
    var elem = $('#name_in').val(); 
    alert(">>"+elem); 
</script> 

在這種情況下,編碼完美無缺!也沒有必要JS轉義字符,如:'和「

0

外部JavaScript用UTF-8字符集:

<script src="myscripts.js" charset="UTF-8"></script>
或內部:d!

<script charset="UTF-8"></script>

0

嘗試使用選項「保存與編碼」您的代碼編輯器來保存文件。 我知道Sublime Text有這個選項(File - > Save with encoding)。

你可以嘗試不同的編碼。 UTF-8或ISO-8859-1。

這個想法是,你必須使用頭部(元)是相同的編碼保存文件。