使用Java的OutputStream.write()函数将字节“0”写为字节“32”

时间:2012-01-16 08:47:42

标签: java javascript content-type outputstream

在我的代码中(doGet方法中的HttpServlet)我需要在.js文件中写入可以取0到255之间的任何值的字节。我在调试器中检查了结果[1]的值为0.但是,在外部文件中,它被写为空格,当我尝试读取它时,它的字节值为“32”。我只有字节0的这个问题,其余的这是完美的。有什么想法吗?

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中的等价物是什么?

由于

3 个答案:

答案 0 :(得分:1)

32是空格的ASCII值。这就是为什么你得到空白32。

答案 1 :(得分:1)

在Stackoverflow中已经回答了二进制数据:How do I read binary data to a byte array in Javascript?

内容类型更好的是application/octet-stream,没有内容处置标题。

答案 2 :(得分:0)