2010-05-19 45 views
1

我想从JavaScript显示一些语言特定的字符,但我不能。Eclipse javascript字符编码

我的应用程序是一个Java web应用程序,前端是jQuery。从服务器发送的所有字符(包括JSP或AJAX)都会正确显示。当我想显示一些硬编码到JavaScript文件的文本时,它已经损坏。

我正在使用Eclipse。在JSP的头我用:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 

我已经试过这(在脚本元素字符集)太:

<script type="text/javascript" charset="utf-8"><c:import url="/JS/mainJS.js" /></script> 

在我的Eclipse我设置项目属性/文本文件编码UTF-8和我已经检查了JS文件的资源属性/文本文件编码也是UTF-8。

但当我尝试这个办法:

$.test = function(){ 
    var s = "éééáááűűűű"; 
    alert(s); 
} 

我得到:

奇怪的是:当我尝试在一个单独的HTML文件(在同一个项目),它的工作:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 

<html> 
    <head> 
    <title>Test</title> 

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 

    <style type="text/css"> 
     body {background: #c0c0c0;} 
    </style> 

    <script type="text/javascript"> 
     $(document).ready(function(){ 
      var s = "éááűűúúú"; 
      $("#console").text(s); 
      alert(s); 
     }) 
    </script> 

    </head> 

    <body> 
     <div id="console"></div> 
    </body> 
</html> 

即使我不使用任何内容类型和页面编码设置。

什么问题?我该怎么办? (我使用集成在Eclipse中的Apache Tomcat)

在此先感谢!

+0

你使用任何处理html的过滤器?如果使用脚本标记导入js文件而不是c:import,会发生什么情况? – marcosbeirigo 2010-05-19 18:26:59

回答

1

如果请求的响应头中没有编码,c:import将使用服务器平台默认编码。相反,只需使用src属性。网络浏览器更聪明。

<script type="text/javascript" src="/JS/mainJS.js"></script> 

(如果有必要删除,如果你在一个固定范围内的域根运行,而不是领先斜线)

如果你真的,真的需要c:import这个(为此我真的穿上”看不到任何优势在这种特定的情况),那么你需要写一个Filter监听/JS/*其设置相应的Content-Type头与响应正确的编码。然而,如果它涉及外部URL,则这不起作用,这是外部服务器的责任。

+0

是的,你是对的!非常感谢你! – Bardock 2010-05-19 18:48:48

+0

不客气。尽量不要过分复杂的东西;) – BalusC 2010-05-19 18:56:41