2017-01-24 13 views
0

このコードは、サンプルのlatin1/ISO-8859-1でエンコードされたファイルをダウンロードし、ディスクに保存します。そのファイルを開くと、奇妙な疑問符文字seeが表示されます。 https://stackoverflow.com/a/3527176/779159は、間違ったエンコーディングが適用されているため説明しています。latin1はそれを修正する必要があります。latin1文字エンコーディングを使ってNodeJSにファイルを保存する方法は?

const url = 'http://vancouver-webpages.com/multilingual/french.asis' 
request.get(url, { encoding: null }) 
    .pipe(fs.createWriteStream('/tmp/file.txt', { defaultEncoding: 'latin1' })) 

しかしrequestfsモジュールを使用して、私はそれがlatin1エンコーディングで保存することができません。このコードを修正するにはどうすればよいですか?

答えて

0

ノードv8.1.4は、Bufferのエンコーディングの1つとしてlatin1(別名「バイナリ」)をサポートする必要があります。私はちょうどあなたのコードをテストし、実際に正常に動作します。 Atomをテキストエディタとして使用し、最初は「UTF-8」だと思ったので、疑問符文字が表示されました。 UTF-8から 'Auto-Detect'に切り替えると、すべてが正常に表示されました。下のスクリーンショットを参照してください。それは1252年、Windowsが「エンコーディングのために言いますが、それは私が「ISO 8859-1」を選択した場合と同じようにどのように動作するか

Windows 1252 Encoding on Atom

注意。したがって、使用しているエディタが文字エンコーディングを正しく検出していることを確認してください。ノードの障害ではありません! docs for Node v8.1.4に応じところで

、注意すべき興味深い、バッファ用のいずれかのセクションの:

今日のブラウザでは、「latin1の」 とISO-8859の両方を別名WHATWG仕様に従ってください-1〜win-1252。つまり、返される文字セットが WHATWG仕様にリストされているもののいずれかである場合、サーバが実際に win-1252エンコードデータを返し、 'latin1'エンコーディングを使用している可能性があります( http.get間違って の文字をデコードする

関連する問題