10

NodeJSのドキュメントbinaryでは、将来のある時点で廃止されるため、文字列のエンコーディングは強く推奨されていないことを強調しています。

ただし、エンコードされた文字列node-imagemagickしか出力できないモジュールで画像のサムネイルを生成しようとしています。binary

私の最終的な目標は、生成されたサムネイルを BLOB として SQLite3 データベース (私は を使用していますnode-sqlite3) に送信することです。そのため、バイナリ Buffer オブジェクトとしてサムネイルが必要であると考えました。

binaryエンコードされた出力を生のバイナリ バッファー (エンコードされた文字列node-imagemagickを含むバッファーだけでなく)に直接デコードするにはどうすればよいですか? binary使いたくないbase64

4

3 に答える 3

18
const buffer = new Buffer(binaryString, "binary");

テスト済み:

$ node
> var binaryString = "\xff\xfa\xc3\x4e";
> var buffer = new Buffer(binaryString, "binary");
> console.log(buffer);
<Buffer ff fa c3 4e>

更新:v10.0.0以降-Buffer.from(string[, encoding])代わりに使用してください。

于 2012-12-11T16:14:28.400 に答える
0

エンコーディングにノードのバッファを使用しません。

これが失敗し始めた場合は、試すことができますiconv-lite( https://www.npmjs.com/package/iconv-lite ):

var encode = require("iconv-lite");
var binaryString = "\xff\xfa\xc3\x4e";
var buffer = encode(binaryString, "binary");
console.log(buffer);
// Prints <Buffer ff fa c3 4e>

更新iconv-liteライブラリは現在 es6 構文に切り替わりました 。したがって、次のコードは機能しません。次のようなことをしなければなりません:

import { encode } from "iconv-lite";

これは常に変更されるため、コードを更新するつもりはありません。ドキュメントを参照してください: https://github.com/ashtuchkin/iconv-lite

于 2016-05-27T23:25:05.417 に答える