在我的代码中(在doGet方法中的HttpServlet),我需要写一个字节,可以取任何值,从0到255, .js文件。我在调试器中检查了结果[1]的值为0.但是,在外部文件中它被写为空格,当我尝试读取它时,其字节值为“32”。我只有字节0这个问题,其余的这是完美的。有任何想法吗?Byte“0”用Java的OutputStream.write()函数写成字节“32”
res.setContentType("image/gif");
res.setHeader("Content-Disposition","attachment;filename=myFile.js");
OutputStream os = res.getOutputStream();
byte[] result=encrypt(req.getParameter("original")); // Here result has values [64,0,81,80]
os.write(result,0,result.length);
我从一个外部JavaScript检索值:
var whatever = data[1].charCodeAt(0); // whatever has value 32
我在JavaScript程序中看到了类似的问题,他们的权利写入文件之前修复这个问题,包括这个循环:
for (var i=0; i<result.length; i++) {
result[i] = String.fromCharCode(result[i]); }
我已经做了一些测试,并为Javascript工作。 Java中等价的是什么?
谢谢
你为什么要设置内容类型'图像/的JavaScript文件gif'? – 2012-01-16 08:51:01
因为这个JS文件可以包含非文本字符(如这个字节0),并且如果我使用内容类型“text/javascript”会是一个问题,对不对?谢谢 – Arturo 2012-01-16 11:02:20
javascript是文本。我没有意识到任何浏览器会使包含二进制字符的JavaScript变得有意义。 – 2012-01-16 11:04:23