1

私が開発しているブラウザー拡張機能では、jQuery を使用して XHR 要求を実行してデータをロードしています。

$.get(url).done(function(data, textStatus) {
    console.log(data);
})

リモートでロードされたデータは、Windows-1252 でエンコードされた CSV ファイルであり、Content-disposition:attachment を使用し、mime-type/charset ヘッダーを使用せずに提供されます (バックエンドを制御できないため、修正できません)。

どうすればブラウザが応答を utf-8 ではなく windows-1252 としてデコードするように強制できますか?

4

4 に答える 4

2

以前の調査と最初の回答から示唆されたように、jQuery を使用してやりたいことを行う方法を見つけることができませんでした。https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Recoming_Binary_Dataで説明されているように、responseType=blob を指定したバニラ XMLHttpRequest を使用して問題を回避しました。

var oReq = new XMLHttpRequest();
oReq.open("GET", url, true);
oReq.responseType = "blob";
oReq.onload = function(e) {
    var blob = new Blob([oReq.response], { type : 'text\/csv' });
    account.data = blob;
}
oReq.onerror = function(e){
    ...
}
oReq.send();

幸いなことに、私はすでに Blob を使用してデータをサーバーに戻していたので、実際にはここでデコード/エンコードの手順を保存しています...

于 2013-08-27T15:10:30.670 に答える
0

たぶん、以下も誰かに役立つかもしれません。

function getData(url) {
  var request = new XMLHttpRequest();
  request.open('GET', url, false);
  request.overrideMimeType('text/xml; charset=iso-8859-1');
  request.send(null);
  if (request.status === 200) {
    console.log(request.responseText);
  }
}
于 2021-12-14T10:14:02.533 に答える