Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 通过AJAX从Github检索到的日语文本文件是乱码_Jquery_Ajax_Github_Character Encoding - Fatal编程技术网

Jquery 通过AJAX从Github检索到的日语文本文件是乱码

Jquery 通过AJAX从Github检索到的日语文本文件是乱码,jquery,ajax,github,character-encoding,Jquery,Ajax,Github,Character Encoding,我使用下面的AJAX调用从同一Github repo中的另一个目录获取包含日语字符的文本文件 $.ajax({ type: "GET", url: "https://raw.githubusercontent.com/mystuff/japaneseProject/master/data/jp.txt", contentType: 'text/plain; charset=utf-8', dataType: "text", cache: false,

我使用下面的AJAX调用从同一Github repo中的另一个目录获取包含日语字符的文本文件

$.ajax({
    type: "GET",
    url: "https://raw.githubusercontent.com/mystuff/japaneseProject/master/data/jp.txt",
    contentType: 'text/plain; charset=utf-8',
    dataType: "text",
    cache: false, 
    success: function(data) {
        console.log(data);
    }
});
然而,
console.log(data)
的输出只是垃圾:

编码可能有问题,但我不知道是什么。最初,这个URL是一个直接的Dropbox链接,工作得很好,但由于Dropbox停止了它的公用文件夹,它就不再工作了

如果我尝试其他托管服务,比如GoogleDrive,我要么遇到CORS错误,要么输出相同的垃圾


.

您的pastebin链接没有任何用处。
问题很可能是您的
.txt
文件已被编码为许多日文字符集编码之一,但页面的编码设置为utf-8

那么有两种解决方案:

  • 最简单的方法是将txt文件重新编码为utf-8

  • 如果不能,则可以将文件作为Blob获取,然后通过a和的第二个参数将其作为文本读取

(在下面的示例中,我确实将txt文件编码为ISO-2022-JP。)
fetch('https://dl.dropboxusercontent.com/s/ikr7tk47ygt2mfe/test-ISO2022-JP.txt?dl=0')
.然后(resp=>resp.text())
。然后(text=>raw.innerHTML=text);
取('https://dl.dropboxusercontent.com/s/ikr7tk47ygt2mfe/test-ISO2022-JP.txt?dl=0')
.然后(resp=>resp.blob())
.然后(blob=>{
设fr=newfilereader();
fr.onload=e=>fileRead.innerHTML=fr.result;
fr.readAsText(blob,“ISO-2022-JP”);
});
表格{
边缘顶部:12px;
边界塌陷:塌陷;
}
运输署,
th{
边框:1px实心#000;
填充:2px6px;
垂直对齐:顶部;
}
tr{
边界:0;
保证金:0;
}

作为文本的原始响应
来自FileReader+编码

您的pastebin链接没有用。
问题很可能是您的
.txt
文件已被编码为许多日文字符集编码之一,但页面的编码设置为utf-8

那么有两种解决方案:

  • 最简单的方法是将txt文件重新编码为utf-8

  • 如果不能,则可以将文件作为Blob获取,然后通过a和的第二个参数将其作为文本读取

(在下面的示例中,我确实将txt文件编码为ISO-2022-JP。)
fetch('https://dl.dropboxusercontent.com/s/ikr7tk47ygt2mfe/test-ISO2022-JP.txt?dl=0')
.然后(resp=>resp.text())
。然后(text=>raw.innerHTML=text);
取('https://dl.dropboxusercontent.com/s/ikr7tk47ygt2mfe/test-ISO2022-JP.txt?dl=0')
.然后(resp=>resp.blob())
.然后(blob=>{
设fr=newfilereader();
fr.onload=e=>fileRead.innerHTML=fr.result;
fr.readAsText(blob,“ISO-2022-JP”);
});
表格{
边缘顶部:12px;
边界塌陷:塌陷;
}
运输署,
th{
边框:1px实心#000;
填充:2px6px;
垂直对齐:顶部;
}
tr{
边界:0;
保证金:0;
}

作为文本的原始响应
来自FileReader+编码

嘿,你能碰巧把我们链接到数据集吗?url是一个死链接。@nfnneil我添加了一个到数据集的链接。这只是一个日语频率单词列表的文本文件。它对我来说显示得非常完美,不过我使用了自己的服务器(pastebin不允许跨源)。试着用它,这样行吗?@nfnneil Firefox和Chrome都会因为内容混合而阻止请求(github是https,而你的是http)。嘿,你能不能碰巧把我们链接到数据集,url是一个死链接。@nfnneil我添加了一个到数据集的链接。这只是一个日语频率单词列表的文本文件。它对我来说显示得非常完美,不过我使用了自己的服务器(pastebin不允许跨源)。试着使用它,它能工作吗?@nfnneil-Firefox和Chrome都会因为混合内容而阻止请求(github是https,而你的是http)。有没有办法检查文件的编码?我很确定我在Windows记事本上将其保存为“Unicode”。这会有什么不同吗?如果是的话,为什么我原来的direct Dropbox链接可以工作,但Github上的原始文件不能工作?只是用一个重新编码的文件再试一次。我想显然Unicode和UTF-8毕竟不是一回事!一直想知道这两个选项之间的区别是什么…@user351554 Ah windows和编码。。。根据记事本的unicode是utf-16小端码。不,没有办法检查文件的编码。我们能做的最好的事情就是猜测(例如通过检查未知字符或字符范围)。但是日语是最难检测的语言之一,而且没有单一的防弹方法。有没有方法检查文件的编码?我很确定我在Windows记事本上将其保存为“Unicode”。这会有什么不同吗?如果是的话,为什么我原来的direct Dropbox链接可以工作,但Github上的原始文件不能工作?只是用一个重新编码的文件再试一次。我想显然Unicode和UTF-8毕竟不是一回事!一直想知道这两个选项之间的区别是什么…@user351554 Ah windows和编码。。。根据记事本的unicode是utf-16小端码。不,没有办法检查文件的编码。我们能做的最好的事情就是猜测(例如通过检查未知字符或字符范围)。但是日语是最难检测的语言之一,而且没有单一的防弹方法。