Javascript 响应数据在Ajax中的格式无效

Javascript 响应数据在Ajax中的格式无效,javascript,jquery,ajax,character-encoding,shift-jis,Javascript,Jquery,Ajax,Character Encoding,Shift Jis,我有一个字符集为“Shift_JIS”的文本文件,该文件包含日语字符。然后我对该文件执行ajax请求,如下所示 $.ajax({ url: "demo.txt", success: function(result){ alert(result); }} ); 但警报中显示的数据不是有效的日文字符。相反,它显示一些垃圾数据。尽管我尝试设置响应头字符集,并且在stackoverflow中执行了许多以前已经存在的解决方案,但它没有起作用。有谁能帮我解决这个问题

我有一个字符集为“Shift_JIS”的文本文件,该文件包含日语字符。然后我对该文件执行ajax请求,如下所示

$.ajax({
    url: "demo.txt",
    success: function(result){
        alert(result);
    }}
);
但警报中显示的数据不是有效的日文字符。相反,它显示一些垃圾数据。尽管我尝试设置响应头字符集,并且在stackoverflow中执行了许多以前已经存在的解决方案,但它没有起作用。有谁能帮我解决这个问题吗


注意:浏览器是Internet Explorer

您说过您试图更改字符集,您是否尝试过将contentType更改为纯文本

$.ajax({
    /*...*/
    contentType: "text/plain; charset=Shift_JIS"
    /*...*/
})

您说过您试图更改字符集,您是否尝试过将contentType更改为纯文本

$.ajax({
    /*...*/
    contentType: "text/plain; charset=Shift_JIS"
    /*...*/
})

不能在JavaScript中直接将Shift_JIS文件读入字符串对象。您必须将文件内容存储到二进制对象中,然后使用
textdecker
将其解码为UTF-16(JavaScript字符串的内部表示形式)

不幸的是,jQuery的
$.ajax()
无法将响应体作为二进制(
dataType:'binary'
)处理。所以你必须使用额外的模块,比如 ,或像这样使用XMLHttpRequest:

//ref。https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data
var oReq=新的XMLHttpRequest();
open(“GET”,“demo.txt”,true);
oReq.responseType=“arraybuffer”//将响应体作为二进制文件处理
oReq.onload=功能(oEvent){
if(oReq.响应){
var sjisDecoder=新文本解码器('shift-jis');
警报(sjisDecoder.decode(oReq.response))//注意:不是oReq.responseText
}
};
oReq.send(空);

在JavaScript中,无法直接将Shift_JIS文件读入字符串对象。您必须将文件内容存储到二进制对象中,然后使用
textdecker
将其解码为UTF-16(JavaScript字符串的内部表示形式)

不幸的是,jQuery的
$.ajax()
无法将响应体作为二进制(
dataType:'binary'
)处理。所以你必须使用额外的模块,比如 ,或像这样使用XMLHttpRequest:

//ref。https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data
var oReq=新的XMLHttpRequest();
open(“GET”,“demo.txt”,true);
oReq.responseType=“arraybuffer”//将响应体作为二进制文件处理
oReq.onload=功能(oEvent){
if(oReq.响应){
var sjisDecoder=新文本解码器('shift-jis');
警报(sjisDecoder.decode(oReq.response))//注意:不是oReq.responseText
}
};
oReq.send(空);

是否尝试将其记录在控制台日志中?或者试着访问一下你的主机/demo.txt,看看文本是什么样子的?你能分享一些demo.txt(更新问题)@DavidJorHpan的shift_jis信吗インフォメーションコード@MehulMohan这不是文本的问题。我将字符集设置为UTF8。当时它工作正常。但是使用“Shift_JIS”只会产生问题,是否尝试将其记录下来?或者试着访问一下你的主机/demo.txt,看看文本是什么样子的?你能分享一些demo.txt(更新问题)@DavidJorHpan的shift_jis信吗インフォメーションコード@MehulMohan这不是文本的问题。我将字符集设置为UTF8。当时它工作正常。但只有“Shift_JIS”才有问题