2016-12-13 9 views
0

ANSIでエンコードされたファイルのテキストをnode.jsのUTF8でエンコードされたテキストに変換しようとしていますANSIファイルのテキストをnode.jsのUTF8に変換するFyle System

ノードのコアFyle Systemを使用してファイルから情報を読み取っています。エンコーディングがANSIであることをreadFileに '伝える'方法はありますか?

fs = require('fs'); 
     fs.readFile('..\\\\LogSSH\\' + fileName + '.log', 'utf8', function (err, data) { 
      if (err) { 
       console.log(err); 
      } 

もしそうでない場合は、どうすればこのテキストを変換できますか?

答えて

1

もちろん、ANSIは実際にはエンコードではありません。しかし、関係なく、私たちが話している正確なものをエンコーディング私はMicrosoftのコード・ページがBuffers and Character Encodingsで文書化比較的短いリストに含まれて見ることはできません。

  • ascii - のみ7ビットのASCIIデータのため。このエンコーディングは高速で、設定されている場合は上位ビットを取り除きます。

  • utf8 - マルチバイトでエンコードされたUnicode文字。多くのWebページやその他のドキュメントフォーマットでは、UTF-8を使用しています。

  • utf16le - 2または4バイトのリトルエンディアンでエンコードされたUnicode文字。サロゲートペア(U + 10000〜U + 10FFFF)がサポートされています。

  • ucs2 - 'utf16le'のエイリアス。

  • base64 - Base64エンコーディング。文字列からバッファを作成する場合、RFC4648のセクション5で指定されているように、このエンコードでは「URLとファイル名の安全なアルファベット」も正しく受け入れられます。

  • latin1 - 1バイトの符号化文字列ラテン1補足ブロックおよびC0/C1制御コードとなるように、RFC1345の63ページのIANAで定義されているように)。

  • binary - 'latin1'のエイリアス。

  • hex - 各バイトを2つの16進文字でエンコードします。

あなたは西ヨーロッパで作業する場合は、Windows-1252の同義語としてlatin1使用したくなるかもしれませんが、それはできるだけ早くあなたがシンボルを印刷すると、誤った結果をレンダリングします。

答えはいいえ、iconv-liteのようなサードパーティ製のパッケージをインストールする必要があります。

+0

感謝!!!!私はiconv-liteを使わずに解決しました。 –

+0

@AsierPomposo iconv-liteなしでどうやって解決しましたか? –

+0

@DuncanLuk。私は 'utf8'からfs.readFile()のバイナリにエンコードを変更して解決します。あなたは上記のコードを持っています –

0

私の場合、タイプ間の変換は、特殊なラテン文字を「í」または「ó」として使用する必要があるためでした。私はそれがfs.readFileでバイナリに「UTF8」からエンコーディングを変更解く()関数:情報のため

fs.readFile('..\\LogSSH\\' + fileName + '.log', {encoding: "binary"}, function (err, data) { 
      if (err) { 
       console.log(err); 
      } 
+0

'binary'は 'latin1'のエイリアスとして文書化されています* –

関連する問題