我正在使用以下AJAX调用从同一个Github仓库中的另一个目录中获取包含日文字符的文本文件。
$.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停止了它的公共文件夹,它不再用了。
如果我尝试其他托管服务,例如Google云端硬盘,我要么遇到CORS错误,要么输出相同的垃圾。
答案 0 :(得分:2)
您的pastebin链接没用
问题很可能是您的.txt
文件已被编码为许多日语字符集编码之一,但您的页面编码设置为utf-8。
然后有两个解决方案:
最简单,将您的txt文件重新编码为utf-8。
如果你不能,你可以将你的文件作为Blob获取,然后通过FileReader和readAsText(blob, encoding)
的第二个参数将其作为文本阅读。
(在下面的示例中,我将txt文件编码为ISO-2022-JP。)
fetch('https://dl.dropboxusercontent.com/s/ikr7tk47ygt2mfe/test-ISO2022-JP.txt?dl=0')
.then(resp => resp.text())
.then(text => raw.innerHTML = text);
fetch('https://dl.dropboxusercontent.com/s/ikr7tk47ygt2mfe/test-ISO2022-JP.txt?dl=0')
.then(resp => resp.blob())
.then(blob => {
let fr = new FileReader();
fr.onload = e => fileRead.innerHTML = fr.result;
fr.readAsText(blob, 'ISO-2022-JP');
});
table {
margin-top: 12px;
border-collapse: collapse;
}
td,
th {
border: 1px solid #000;
padding: 2px 6px;
vertical-align: top;
}
tr {
border: 0;
margin: 0;
}
<table>
<tr>
<th>Raw response as text</th>
<th>From FileReader + encoding</th>
</tr>
<tr>
<td><pre id="raw"></pre></td>
<td><pre id="fileRead"></pre></td>
</tr>
</table>