1
我有一個簡短的JavaScript函數,它將取得一個上傳的文件並顯示相當於它的十六進制數。在十六進制編輯器中比較原始文件和輸出顯示它們部分不同但不完全。Javascript FileReader讀取文件不正確
String.prototype.hexEncode = function(){
var hex, i;
var result = "";
for (i = 0; i < this.length; i++) {
hex = this.charCodeAt(i).toString(16);
result += ("" + hex).slice(-4);
}
return result
}
function upload() {
var file = document.getElementById("fileToUpload").files[0];
var reader = new FileReader();
reader.readAsText(file, "windows-1252");
reader.onload = function (evt) {
var program = evt.target.result.hexEncode();
program = program;
console.log(program);
}
}
這裏的原始文件和輸出是彼此相鄰:
2A 2A 54 49 38 33 46 2A 1A 0A 0A 43 72 65 61 74
2A 2A 54 49 38 33 46 2A 1A AA 43 72 65 61 74 65
是什麼原因造成的輸出的不同?任何幫助將不勝感激。
相反.readAsText'的'這可能會改變的內容,你有沒有試過['.readAsArrayBuffer'(HTTPS://developer.mozilla .org/en-US/docs/Web/API/FileReader/readAsArrayBuffer)而不是? –
絕對不要嘗試從readAsText結果生成十六進制轉儲。此外與非默認編碼。 readAsArrayBuffer是你想要的。 – Kaiido
預期結果是什麼? – guest271314