2016-02-13 69 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。

这个想法是,你必须使用头部(元)是相同的编码保存文件。