2012-02-17 17 views
0

下面的代码包含一个JS函数,它接收参数String“€€”(欧元符号)。 我需要将这些字符中的每一个转换为它的ASCII扩展的整数(128与ISO-8859-1)。在Javascript中将字符转换为正确的ASCII扩展整数值

然而,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 
+0

€in ASCII?有这样的野兽吗? – bzlm 2012-02-17 08:24:27

+1

ISO-8859-1没有''''。你的意思是windows-1252? – dan04 2012-02-17 16:05:17

+0

我已更新问题描述。我打算用ISO-8859-1创建文件,但上面的代码可能是错误的。你能协助吗?谢谢 – Arturo 2012-02-17 17:51:17

回答

1

你必须确保该文件实际上是保存为ISO-8859-1,但实际上是不可能的因为该字符集中没有€字符。 “

”ISO/IEC 8859-1缺少欧元符号。“

http://en.wikipedia.org/wiki/ISO/IEC_8859-1

正如你所得到的字符代码8364,该文件是最有可能保存为UTF-8,作为字符代码与unicode character €对应。

+0

感谢您的帮助。似乎是问题的根源。我已更新问题描述。我打算用ISO-8859-1创建文件,但上面的代码可能是错误的。你能协助吗?谢谢 – Arturo 2012-02-17 17:52:08

+1

@ user411103:您使用的是ISO-8859-1的一些非标准格式,因为标准版本没有代码128到159的任何字符。无论如何,当您从文件复制文本时,它只是文本,它没有任何编码信息。当您粘贴文本并保存时,它将使用程序正在使用的任何编码进行编码。保存文件时应指定编码(例如,使用另存为...选项)。 – Guffa 2012-02-17 19:05:47

+0

我将需要在一个可打印的字符中写入0到255之间的整数。你会推荐我什么charset?谢谢 – Arturo 2012-02-17 19:18:21