【问题标题】:Convert character to correct ASCII-extended integer value in Javascript在Javascript中将字符转换为正确的ASCII扩展整数值
【发布时间】: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


【解决方案1】:

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

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

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

当您获得字符代码 8364 时,文件很可能保存为 UTF-8,因为该字符代码对应于 unicode character €

【讨论】:

  • 感谢您的帮助。似乎是问题的根源。我已经更新了问题描述。我打算用 ISO-8859-1 创建文件,但上面的代码可能是错误的。你能帮忙吗?谢谢
  • @user411103:您使用的是 ISO-8859-1 的一些非标准形式,因为标准版本没有代码 128 到 159 的任何字符。无论如何,当您从该文件只是文本,没有任何编码信息。当您粘贴并保存文本时,它将使用程序使用的任何编码进行编码。您应该在保存文件时指定编码(例如,使用另存为...选项)。
  • 我需要在一个可打印字符中写入 0-255 的整数。你会推荐我什么字符集?谢谢
  • 为什么不UTF-8?所有浏览器都支持它,它很容易被 Javascript 操作(它在内部使用不同的 UTF 格式,但可以很容易地在两种表示之间交叉),而 UTF 的全部意义在于拥有一个可以处理人类每个字符的单个字符编码 UTF-8 这样做的方式是,西方字符的表示只需要很少的空间,并且大部分都与 ASCII 兼容。 (我相信 7 位 ASCII 是一个子集?)
  • @user411103: 问题是没有办法将文件内容直接传输到客户端脚本而不对其进行转换,以便它可以作为 HTML 代码的一部分或作为单独的请求交付可以由 XHR 对象解析。当您将某些字符放入 textarea 时,它们会起作用,但距离 0 到 255 的范围很远。
猜你喜欢
  • 2012-11-18
  • 2013-03-19
  • 1970-01-01
  • 1970-01-01
  • 2016-08-01
  • 1970-01-01
  • 2013-02-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多