如何在Shift-jis中获取XMLHttpRequest的响应数据

时间:2012-10-24 01:02:56

标签: javascript xmlhttprequest

我使用XMLHttpRequest。

如果数据是用UTF-8编写的,则没有问题。

但数据是用Shift-jis写的,我无法读取响应。

我尝试设置像标题一样的请求标题,但它不起作用。

setRequestHeader(“Content-Type”,“text / plain; charset = Shift-JIS”);

如何在Shift-JIS中获取响应数据?

1 个答案:

答案 0 :(得分:0)

JavaScript字符串的内部表示形式是UTF-16。因此,您将首先将Shift-JIS字节数组转换为JavaScript字符串。

现代浏览器可以为此目的使用TextDecoder(https://caniuse.com/#feat=textencoder)。首先,您必须将responseType中的XMLHttpRequest设置为arraybuffer

var req = new XMLHttpRequest();
req.responseType = "arraybuffer";
var arrayBuffer = req.response;

您将获得一个字节数组,该数组用arrayBuffer中的Shift-JIS编码表示响应数据。

然后,为Uint8Array文本创建一个Shift-JIS对象,并将其转换为顺序JavaScript字符串。

var byteArray = new Uint8Array(arrayBuffer);
var decoder = new TextDecoder('shift_jis');
var str = win1251decoder.decode(byteArray);

您将在str中获得一个UTF-16字符串。