我使用 XMLHttpRequest 。
如果数据以 UTF-8 写入,则没有问题。
但是数据是用 Shift-jis 写入的,我无法读取响应。
我尝试像下面这样设置请求标头,但它没有用。
setRequestHeader("Content-Type", "text/plain;charset=Shift-JIS");
如何在 Shift-JIS 中获取响应数据?
我使用 XMLHttpRequest 。
如果数据以 UTF-8 写入,则没有问题。
但是数据是用 Shift-jis 写入的,我无法读取响应。
我尝试像下面这样设置请求标头,但它没有用。
setRequestHeader("Content-Type", "text/plain;charset=Shift-JIS");
如何在 Shift-JIS 中获取响应数据?
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;
您将获得一个字节数组,该数组表示 Shift-JIS 编码中的响应数据arrayBuffer
。
然后,Uint8Array
为文本创建一个对象Shift-JIS
,并将其转换为有序的 JavaScript 字符串。
var byteArray = new Uint8Array(arrayBuffer);
var decoder = new TextDecoder('shift_jis');
var str = win1251decoder.decode(byteArray);
你会得到一个 UTF-16 字符串str
。