我使用XMLHttpRequest。
如果数据是以UTF-8格式写入的,则不存在问题。
但是数据是用Shift-jis写的,我不能读取响应。
我试着像bellow一样设置请求头,但它不起作用。
setRequestHeader(“内容类型”,“文本/纯文本;字符集=Shift-JIS”);
如何在Shift-JIS中获取响应数据?
发布于 2020-07-15 00:11:15
JavaScript字符串的内部表示为UTF-16。因此,您需要首先将Shift-JIS字节数组转换为JavaScript字符串。
现代浏览器可以使用TextDecoder (https://caniuse.com/#feat=textencoder)来实现此目的。首先,您必须将XMLHttpRequest的responseType设置为arraybuffer
var req = new XMLHttpRequest();
req.responseType = "arraybuffer";
var arrayBuffer = req.response;您将获得一个字节数组,该数组表示arrayBuffer中Shift-JIS编码的响应数据。
然后,为Shift-JIS文本创建一个Uint8Array对象,并将其转换为序号JavaScript字符串。
var byteArray = new Uint8Array(arrayBuffer);
var decoder = new TextDecoder('shift_jis');
var str = win1251decoder.decode(byteArray);您将在str中获得一个UTF-16字符串。
https://stackoverflow.com/questions/13041596
复制相似问题