Javascript 响应数据在Ajax中的格式无效
我有一个字符集为“Shift_JIS”的文本文件,该文件包含日语字符。然后我对该文件执行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中执行了许多以前已经存在的解决方案,但它没有起作用。有谁能帮我解决这个问题
$.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”才有问题