【发布时间】:2012-03-08 15:50:57
【问题描述】:
下面的代码包含一个接收参数字符串“€€”(欧元符号)的 JS 函数。 我需要将这些字符中的每一个都转换为其 ASCII 扩展整数等价物(ISO-8859-1 为 128)。
但是,t[0] 和 t[1] 取值“8364”而不是“128”。我究竟做错了什么?请注意,如果我使用 UTF-8 而不是 ISO-8859-1,它们的值为 65533,并且在 JS 调试器(Chrome 和 IE 开发人员工具)中会显示一个问号而不是 € 符号。
谢谢你
<html>
<head>
<meta http-equiv="Content-Type" content="text/javascript; charset=ISO-8859-1">
<title>JavaScript Scripting</title>
</head>
<body>
<script type="text/javascript" charset="ISO-8859-1">
function d(s)
{
var data = (s + "").split("");
var dataLength = data.length;
var t = [dataLength],n;
for(n=0;n<dataLength;n++)
t[n]=data[n].charCodeAt(0);
}
d("€€");
</script>
</body>
</html>
完整的故事是我从文件“output.js”中粘贴了这个“€€”,这两个字节是由下面的 Java 代码编写的,代表整数 [128,128]。这就是为什么我需要 t[0] 和 t[1] 来获得 128 的值。
res.setContentType("application/octet-stream");
res.setHeader("Content-Disposition","attachment;filename=output.js;charset=ISO-8859-1");
ServletOutputStream os = res.getOutputStream();
char result[]=encode(req.getParameter("originalScript"));
// result[0] and result[1] have here integer value 128
String result2=new String(result);
// result2 is displayed here as non printable characters (blank)
os.print(result2);
// On output.js "€€" is displayed
【问题讨论】:
-
€ ASCII 码?有这样的野兽吗?
-
ISO-8859-1 中没有
€。你是说 windows-1252 吗? -
我更新了问题描述。我打算用 ISO-8859-1 创建文件,但上面的代码可能是错误的。你能帮忙吗?谢谢
标签: javascript utf-8 character-encoding iso-8859-1