javascript,我们如何读取带有重音字母的本地文本文件?

javascript,我们如何读取带有重音字母的本地文本文件?,javascript,html,utf-8,character-encoding,Javascript,Html,Utf 8,Character Encoding,我有一个疑问,因为我需要读取一个本地文件,并且我一直在研究一些线程,我已经看到了处理它的各种方法,在大多数情况下都有一个输入文件 我需要通过代码直接加载它 我研究过这条线索: 我能读到它 令人惊讶的是,当我试图拆分行和词时,它显示:� 替换重音字母 我现在掌握的代码是: myFileReader.js function readTextFile(file) { var rawFile = new XMLHttpRequest(); rawFile.open("GET", fi

我有一个疑问,因为我需要读取一个本地文件,并且我一直在研究一些线程,我已经看到了处理它的各种方法,在大多数情况下都有一个输入文件

我需要通过代码直接加载它

我研究过这条线索:

我能读到它

令人惊讶的是,当我试图拆分行和词时,它显示:� 替换重音字母

我现在掌握的代码是:

myFileReader.js

function readTextFile(file) {

    var rawFile = new XMLHttpRequest();
    rawFile.open("GET", file, false);
    rawFile.onreadystatechange = function () {
        if (rawFile.readyState === 4) {
            if (rawFile.status === 200 || rawFile.status == 0) {
                allText = rawFile.responseText;
                console.log('The complete text is', allText);
                let lineArr = intoLines(allText);
                let firstLineWords = intoWords(lineArr[0]);
                let secondLineWords = intoWords(lineArr[1]);

                console.log('Our  first line is: ', lineArr[0]);

                let atlas = {};
                for (let i = 0; i < firstLineWords.length; i++) {
                    console.log(`Our ${i} word in the first line is : ${firstLineWords[i]}`);
                    console.log(`Our ${i} word in the SECOND line is : ${secondLineWords[i]}`);
                    atlas[firstLineWords[i]] = secondLineWords[i];
                }
                console.log('The atlas is: ', atlas);
                let atlasJson = JSON.stringify(atlas);
                console.log('Atlas as json is: ', atlasJson);

                download(atlasJson, 'atlasJson.txt', 'text/plain');
            }
        }
    };
    rawFile.send(null);
}

function download(text, name, type) {

    var a = document.getElementById("a");
    var file = new Blob([text], {type: type});
    a.href = URL.createObjectURL(file);
    a.download = name;
}

function intoLines(text) {
    // splitting all text data into array "\n" is splitting data from each new line
    //and saving each new line as each element*

    var lineArr = text.split('\n');

    //just to check if it works output lineArr[index] as below


    return lineArr;


}

function intoWords(lines) {


    var wordsArr = lines.split('" "');


    return wordsArr;

}
函数readTextFile(文件){
var rawFile=new XMLHttpRequest();
打开(“获取”,文件,错误);
rawFile.onreadystatechange=函数(){
if(rawFile.readyState==4){
if(rawFile.status==200 | | rawFile.status==0){
allText=rawFile.responseText;
console.log('完整文本为',所有文本);
让lineArr=输入行(所有文本);
让firstLineWords=intoWords(lineArr[0]);
让secondLineWords=intoWords(lineArr[1]);
log('我们的第一行是:',lineArr[0]);
让atlas={};
for(设i=0;i
问题是:我们如何处理那些带有重音的元音的特殊字符?

我问这个问题,因为即使在IDE中,如果我们在UTF-8中加载txt,也会出现询问标记,所以我改为ISO-8859-1,并且加载良好

我还研究了:

此外,您能否解释一下,在客户端javascript中加载文件是否有较短的方法。例如,在Java中有FileReader/FileWriter/BufferedWriter。Javascript中有类似的东西吗?


谢谢你的帮助

听起来该文件是用ISO-8859-1(或可能是非常类似的Windows-1252)编码的

这些编码没有BOM或等效物

我能看到的唯一解决方案是:

  • 使用(本地)服务器,让它返回HTTP
    内容类型
    头,编码标识为字符集,例如
    内容类型:text/plain;编码=ISO-8859-1

  • 改用UTF-8(例如,在编辑器中以ISO-8859-1的形式打开文件,然后将其另存为UTF-8),因为这是XHR响应主体的格式


  • 听起来该文件是用ISO-8859-1(或者可能是非常类似的Windows-1252)编码的

    这些编码没有BOM或等效物

    我能看到的唯一解决方案是:

  • 使用(本地)服务器,让它返回HTTP
    内容类型
    头,编码标识为字符集,例如
    内容类型:text/plain;编码=ISO-8859-1

  • 改用UTF-8(例如,在编辑器中以ISO-8859-1的形式打开文件,然后将其另存为UTF-8),因为这是XHR响应主体的格式

  • 将文本放入具有相应内容类型的
    .html
    文件中, 例如:

    
    
  • 将文本放入具有相应内容类型的
    .html
    文件中, 例如:


    “此外…”因此,重要的是问一个问题,而不是两个(或更多)。(我正要链接到说明这一点的帮助页面……我找不到。这是帮助中的一个问题。:-)接受文本文件的第一步是知道它使用哪个字符编码。“此外…”因此,重要的是问一个问题,而不是两个(或更多)问题。(我正要链接到说明这一点的帮助页面,但……我找不到。这是帮助中的一个问题。:-)接受文本文件的第一步是知道它使用的字符编码。