我使用XMLHttpRequest。
如果数据是用UTF-8编写的,则没有问题。
但数据是用Shift-jis写的,我无法读取响应。
我尝试设置像标题一样的请求标题,但它不起作用。
setRequestHeader(“Content-Type”,“text / plain; charset = Shift-JIS”);
如何在Shift-JIS中获取响应数据?
答案 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字符串。