繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM