Jquery 通过AJAX从Github检索到的日语文本文件是乱码
我使用下面的AJAX调用从同一Github repo中的另一个目录获取包含日语字符的文本文件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({
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和的第二个参数将其作为文本读取
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小端码。不,没有办法检查文件的编码。我们能做的最好的事情就是猜测(例如通过检查未知字符或字符范围)。但是日语是最难检测的语言之一,而且没有单一的防弹方法。