我想从 javascript 显示一些特定于语言的字符,但我不能。
我的应用程序是一个 Java Web 应用程序,前端是 jQuery。从服务器发送的所有字符(在 JSP 中或通过 AJAX)都会正确显示。当我想显示一些硬编码到 JavaScript 文件中的文本时,它被破坏了。
我正在使用 Eclipse。在 JSP 的 header 中我使用:
<%@ 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)
提前致谢!
最佳答案
如果请求的响应 header 中缺少编码,c:import
将使用服务器平台默认编码。相反,只需使用 src 属性即可。网络浏览器在这方面更加智能。
<script type="text/javascript" src="/JS/mainJS.js"></script>
(如果您在固定上下文而不是域根上运行,则如有必要,请删除前导斜杠)
如果您真的非常需要为此使用 c:import
(老实说,在这种特定情况下我没有看到任何优势),那么您需要在 /JS/*
上编写一个 Filter
监听,以在响应上使用正确的编码设置适当的 Content-Type
header 。但是,如果它涉及外部 URL,则这将不起作用,这是外部服务器的责任。
关于java - Eclipse javascript 字符编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2868232/