我正在尝试在 2 个浏览器上使用jDataView读取二进制文件:Chrome 和 IE9。
我在 ajax 请求之前添加了新类型binary
(使用 jQuery 1.10.0):
// Install binary dataType
jQuery.ajaxSetup({
accepts: {
binary: "text/plain; charset=x-user-defined"
},
contents: {
},
converters: {
"text binary": true // Nothing to convert
}
});
对于返回二进制流的服务器,我添加了标题:
<?php header("Content-type: text/html; charset=windows-1251"); ?>
然后是ajax请求:
$.support.cors = true;
$.ajax({
type: 'GET',
url: url,
dataType: 'binary',
mimeType: 'text/plain; charset=x-user-defined',
success: function(data) {
var view = new jDataView(data);
// ...
}
});
我正在使用该方法getUint8()
来获取二进制流的一部分:
for (var l = 0; l < 8; l++) {
tx += " " + view.getUint8(l, true);
}
然后,比较tx
字符串:
0 0 0 7 12 106 212 65 (chrome) => GOOD (match the expected results)
0 0 2 94 12 106 36 65 (IE9) => 3 BAD sequences
使用 Chrome 它工作得很好,但我没有与 IE9 相同的结果...... Chrome 使用的是本机getUint8
功能,而 IE9 使用的是 jDataView 方法。