Nodejs のバッファを JSON 形式と UTF-8 文字列に変換するにはどうすればよいですか?次の記事では、Nodejs でバッファーと JSON 形式を変換する方法と、バッファーを UTF-8 文字列に変換する方法を紹介します。
Node.js はブラウザベースの JavaScript とは異なります。Node には ES6 ドラフトで ArrayBuffer
が提案される前からバイナリ データを処理する方法があったからです。 Node では、Buffer
(buffer) クラスが、ほとんどの I/O 操作で使用される主要なデータ構造です。これは、V8 ヒープの外側に割り当てられた生のバイナリ データであり、一度割り当てられるとサイズを変更できません。 [推奨学習: "nodejs チュートリアル "]
Node v6.0 より前では、新しいバッファを作成するには、new
キーワードを使用してコンストラクター 関数:
let newBuff = new Buffer('I Love You')
v6.0 以降、新しいバッファー インスタンスを作成するには:
let newBuff = Buffer.from('I Love You')
new Buffer()
コンストラクターは非推奨になり、別の # に置き換えられました。 ##Buffer.from()、
Buffer.alloc()、および
Buffer.allocUnsafe() メソッドの置き換え。
let bufferOne = Buffer.from('All work and no play makes Jack a dull boy') console.log(bufferOne) // <Buffer 41 6c 6c 20 77 6f 72 6b 20 61 6e 64 20 6e 6f 20 70 6c 61 79 20 6d 61 6b 65 73 20 4a 61 63 6b 20 61 20 64 75 6c 6c 20 62 6f 79> let json = JSON.stringify(bufferOne, null, 2) console.log(json) /* { "type": "Buffer", "data": [ 65, 108, 108, 32, 119, 111, 114, 107, 32, 97, 110, 100, 32, 110, 111, 32, 112, 108, 97, 121, 32, 109, 97, 107, 101, 115, 32, 74, 97, 99, 107, 32, 97, 32, 100, 117, 108, 108, 32, 98, 111, 121 ] } */
Buffer とそのデータであることを指定します。
let bufferOriginal = Buffer.from(JSON.parse(json).data) console.log(bufferOriginal) // <Buffer 41 6c 6c 20 77 6f 72 6b 20 61 6e 64 20 6e 6f 20 70 6c 61 79 20 6d 61 6b 65 73 20 4a 61 63 6b 20 61 20 64 75 6c 6c 20 62 6f 79>
console.log(bufferOriginal.toString('utf8')) // All work and no play makes Jack a dull boy
.toString() はバッファを文字列に変換する唯一の方法ではありません。さらに、デフォルトでは、utf-8 形式の文字列に変換されます。
StringDecoder コア モジュールを使用することです。
string_decoder このモジュールは、Buffer
オブジェクトを文字列にデコードする方法を提供します (エンコードされたマルチバイト UTF-8 および UTF-16 を保持するため)キャラクターモード)API。上記の例の代替案は次のとおりです。
const { StringDecoder } = require('string_decoder') const decoder = new StringDecoder('utf8') let bufferOriginal = Buffer.from(JSON.parse(json).data) console.log(decoder.write(bufferOriginal)) // All work and no play makes Jack a dull boy console.log(decoder.end(bufferOriginal)) // All work and no play makes Jack a dull boy
Buffer インスタンスが
StringDecoder インスタンスに書き込まれるとき、内部バッファを使用して、デコードされたデータが確実に保存されます。 string には不完全なマルチバイト文字が含まれていません。これらは、次の
stringDecoder.write() の呼び出し、または次の
stringDecoder.end() の呼び出しまで、バッファー内に保持されます。
プログラミング ビデオをご覧ください。 !
以上がNodejsのバッファをJSON形式とUTF-8文字列に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。