JS保持角色的正常价值

时间:2018-01-12 01:21:01

标签: javascript html5 file filereader

当我运行我的代码片段(如下所示)时,它将短划线( - ),单引号和双引号替换为�。



var button = document.querySelector('#fileInput + button');
var input = document.getElementById('fileInput');
var text = null;
input.addEventListener("change", addDoc);
button.addEventListener("click", handleText);

function addDoc(event) {
  var file = this.files[0];
  var reader = new FileReader();
  reader.onload = function(e) {
    text = reader.result;
    button.removeAttribute("disabled");
  };

  reader.onerror = function(err) {
    console.log(err, err.loaded, err.loaded === 0, file);
    button.removeAttribute("diabled");
  };
  a = reader.readAsText(event.target.files[0]);
  console.log(a);
}

function handleText() {
  addtoPreviousOutput();
  changeOutputParagraph(text);
  button.setAttribute("disabled", "disabled");
}

function changeOutputParagraph(newText) {
  var element = document.getElementById("output");
  element.innerHTML = newText;
}

function addtoPreviousOutput() {
  var previousOutput = document.getElementById("output").innerHTML;
  var previousOutput_sOutput = document.getElementById("previousOutput").innerHTML + "<br />";
  console.log(previousOutput);
  console.log(previousOutput_sOutput);
  document.getElementById("previousOutput").innerHTML = previousOutput_sOutput + previousOutput;
}
&#13;
<p id="previousOutput"></p>
<p id="output"></p>
<input type="text" id="textInput" onkeypress="getText(event)" />
<input type="file" id="fileInput" accept="text/*" />
<button type="button" id="addDoc">Add Document</button>
&#13;
&#13;
&#13;

为什么会这样,我该如何解决?

修改

I get this when I run my file which is 176 lines and 22 KB. 注意:这不是所有文字。

2 个答案:

答案 0 :(得分:1)

FileReader当时只能读取一个文件,但是您要尝试两次读取文件:

reader.readAsText(event.target.files[0]);
console.log(reader.readAsText(event.target.files[0]));

你没有实际的理由这样做。只需存储第一个读取结果 - 并打印您已经读过的数据。

答案 1 :(得分:1)

readAsText默认将文本读取为utf-8。您看到 而不是预期字符的原因是因为您的文本文件不是utf-8编码的 您可以将文件的编码传递给readAsText以正确读取文本。

e.g。拉丁语1

a = reader.readAsText(event.target.files[0], 'ISO-8859-1');