JS 保留字符的正则值

JS Keep Character's Regular Value

当我 运行 我的代码片段(如下所示)时,它将破折号 (-)、单引号和双引号替换为 �.

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;
}
<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>

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

编辑

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

一个 FileReader 一次只能读取一个文件,但是您正在尝试读取该文件两次:

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

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

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

例如对于拉丁语 1

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