C++ アドオンから node.js のファイルをレンダリングしたいと思います。ファイル処理を適用し、出力を node.js 経由でブラウザにレンダリングしたい
ここに私のC++コードがあります
std::ifstream in(filename, std::ios::binary);
in.seekg (0, in.end);
int length = in.tellg();
in.seekg (0, in.beg);
char * buffer = new char [length];
in.read (buffer,length);
in.close();
return buffer;
以下は、node.js のバインディングを追加する V8 コードです。ここで、bufferは上記の C++ コードからの出力です。
Local<Function> cb = Local<Function>::Cast(args[1]);
const unsigned argc = 1;
Local<Value> argv[argc] = {Local<Value>::New(String::New(buffer))};
cb->Call(Context::GetCurrent()->Global(), argc, argv);
このコードは、通常のテキスト ファイルに適しています。Unicode 文字を含むテキスト ファイルを読み取るときに問題が発生します。たとえば、
元のテキスト ファイル
test start
Billél
last
ノードで受信すると、取得します
test start
Bill�l
last
同様に、jpg、png ファイルを読み取る場合、出力ファイルは元のファイルとは異なります。助けてください。