Node.js はイベント駆動型の非同期 I/O フレームワークであり、サーバー上の JavaScript の実行環境と言えます。シングルスレッド、ノンブロッキング I/O、イベント駆動などの特性により広く使用されています。ファイルストリームを処理する場合、文字化けなどの問題を回避するためにエンコードの設定が必要です。
Node.js のストリーム処理
Node.js のストリーム (Stream) は、大規模なデータ コレクションの処理に使用できる抽象インターフェイスです。ストリームはパイプラインと同様の方法でデータ送信を実装し、次のステップに進む前にデータ コレクション全体が表示されるのを待つことなく、データをセグメントに分割して処理します。したがって、大量のデータまたは大きなファイルを処理する場合、ストリームによりメモリ フットプリントと処理時間を大幅に削減できます。
Node.js には、Readable
、Writable
、Duplex
、Transform
という 4 つの基本的なストリーム オブジェクトがあります。その中で、Readable ストリームと Writeable ストリームが最も広く使用されています。
Readable ストリームは、処理のためにデータを Node.js に読み取る入力ストリームとして理解できます。書き込み可能ストリームは、データをターゲットの場所に出力する出力ストリームです。パイプなど 2 つのストリームを組み合わせて、データの送信を処理できます。
Node.jsのストリーム操作処理において、中国語が文字化けする問題が発生する場合があります。現時点では、この問題を解決するためにエンコーディングを設定する必要があります。
ストリーム エンコーディングの設定
Node.js では、ストリームのエンコーディングはsetEncoding()
メソッドを使用して設定されます。読み取りおよび書き込み可能なストリームのエンコード設定を行うことができます。
たとえば、読み取り可能なストリームのエンコーディングを次のように設定します。
const fs = require('fs'); const readableStream = fs.createReadStream('test.txt', 'utf8'); readableStream.setEncoding('utf8');
このとき、読み取り可能なストリームは、エンコーディング タイプに従ってセグメント内のデータを読み取り、セグメントを分割します。データ出力。同様に、書き込み可能なストリームの場合は、setEncoding()
メソッドを使用してエンコードを設定することもできます。例:
const fs = require('fs'); const writableStream = fs.createWriteStream('output.txt', 'utf8'); writableStream.setEncoding('utf8');
Node.js V8.0.0 バージョンより前では、ストリーム エンコーディングの設定は文字列に対してのみ有効であることに注意してください。バイナリ データの読み取りおよび書き込みを行う場合は、 # を使用する必要があります。 ##バッファオブジェクト。
Buffer
オブジェクトを使用してデータをシリアル化および逆シリアル化する必要があります。以上がNode.js はストリームをどのように処理しますか?ストリームエンコーディングを設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。