[英]How to get response data of XMLHttpRequest in 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 )。 首先,您必须将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 字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.