这是我几个月来一直在处理的一个问题,我非常感谢任何帮助。
我正在编码一个字符串并使用下面的函数将输出写入 MyFile.js。在调试我的示例时,char encodedCode[]
显示为整数具有length 12
以下值:97,0,108,101,114,116,40,34,80,114,0,105
.
正如我从 Notepad++ 中看到的那样,MyFile.js 是正确生成的,具有预期的大小和字符。
MyFileServlet.java
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
res.setCharacterEncoding("iso-8859-1");
res.setHeader("Content-Type", "text/javascript;charset=iso-8859-1");
res.setHeader("Content-Disposition","attachment;filename=MyFile.js");
PrintWriter printer=res.getWriter();
char encodedCode[]=encode(req.getParameter("originalScript"));
printer.write(encodedCode);
printer.close();
}
但是,当我尝试使用来自 MyFile.html 的一些调试代码(见下文)运行 MyFile.js 时,我会根据浏览器获得不同的行为:
- Chrome/Firefox:
length 12
价值观97,0,108,101,114,116,40,34,80,114,0,105
- Internet Explorer 9:
length 10
值97,108,101,114,116,40,34,80,114,105
所以IE 忽略了所有的“0”字符。为什么?非常感谢你
JSFIDDLE:http: //jsfiddle.net/vnqL2/
编辑:我尝试将这些字节写入外部二进制文件 MyFile.xxx 并从 Javascript/JQuery/Ajax/XMLHttpRequest 读取它们,但我仍然遇到与 IE 相同的问题。
我的文件.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>My Page</title>
</head>
<body>
<script type="text/javascript" charset="iso-8859-1" src="MyFile.js">
</script>
</body>
</html>
我的文件.js
function d(a)
{
a=(a+"").split("");
var l=a.length,x=[l];
alert(l);
for(i=0;i<l;i++){
x[i]=a[i].charCodeAt(0);
document.write(x[i]);
}
};
d("HERE GO THOSE BYTES HARDCODED");