首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Shift-jis中获取XMLHttpRequest的响应数据

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

Stack Overflow用户
提问于 2012-10-24 09:02:56
回答 1查看 547关注 0票数 2

我使用XMLHttpRequest。

如果数据是以UTF-8格式写入的,则不存在问题。

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

我试着像bellow一样设置请求头,但它不起作用。

setRequestHeader(“内容类型”,“文本/纯文本;字符集=Shift-JIS”);

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

EN

回答 1

Stack Overflow用户

发布于 2020-07-15 00:11:15

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

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

代码语言:javascript
复制
var req = new XMLHttpRequest();
req.responseType = "arraybuffer";
var arrayBuffer = req.response;

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

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

代码语言:javascript
复制
var byteArray = new Uint8Array(arrayBuffer);
var decoder = new TextDecoder('shift_jis');
var str = win1251decoder.decode(byteArray);

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13041596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档