2016-04-30 5 views
0
var request = require("request"); 

var options = { method: 'GET', url:'http://dl.opensubtitles.org/en/download/filead/src-api/vrf-19af0c55/sid-ste0uene5gb0jh8dsrma7tcq15/1955127527.srt'}; 

request(options, function (error, response, body) { 
    if (error) throw new Error(error); 

    console.log(body); 
}); 

通常のブラウザでダウンロードすると、ファイルが正しくエンコードされます。 Postmanを使用してファイルをダウンロードすると、不正なエンコーディングで破損したドキュメントが表示されます。字幕を開く

例:Je suisd sol e。 JEこれは、あなたがそれを行うことができる方法である私は

答えて

1
http.get(sub.url, function(res) { 
     res.pipe(iconv.decodeStream('win1252')).collect(function(err, decodedBody) { 
     srt2vtt(decodedBody, function(err, vttData) { 
      if (err) throw new Error(err) 

      let filename = 'sub-' + sub.lang + 'vtt' 
      let vttPath = path.join(dir, filename) 
      fs.writeFileSync(vttPath, vttData) 
      cb(vttPath) 
    }) 
    }); 
}); 

https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding は、私が働いてそれを得るためのサポートをストリーミングに使用しました。

0

... UTF8に 'Content-Typeの' ヘッダーを設定しようとした、成功しないと

をSAIS。あなたはhttps://github.com/request/request/issues/118をチェックアウトすることができnpm install --save iconv-lite

var iconv = require('iconv-lite'); 
var request = require("request"); 

var options = { method: 'GET', url:'http://dl.opensubtitles.org/en/download/filead/src-api/vrf-19af0c55/sid-ste0uene5gb0jh8dsrma7tcq15/1955127527.srt'}; 

request(options, function (error, response, body) { 
    if (error) throw new Error(error); 

    var formattedData = iconv.decode(body, 'iso-8859-1'); 
    console.log(formattedData); 

}); 

を行う必要があります。彼はiconv-liteを使うことを提案する。

+0

apiは配列で応答し、lang 'fr'のオブジェクトは 'CP1252'を使用してエンコードされます。私はあなたが言ったように、いくつかのエンコーディングで進めましたが、全くありませんでした。 – stoufa88

+0

それは私のために働く。私は適切なデータを取得します。これは 'Je suisdýsolýe。 Je sais' –

+0

'désolée'にする必要があります。 iconv-liteを使用して、別の回避策があります。 – stoufa88

関連する問題