2015-09-24 33 views
1

在服務器的NodeJS:字符串編碼 - NodeJS插件; V8

var random = addon.function("random|random|João|Pinóquio"); 

正如你可以看到我想通過在拉丁美洲編纂的字符串。 在附加的NodeJS:

void function(const FunctionCallbackInfo<v8::Value>& args) { 
//(some code) 
v8::String::Utf8Value param2(args[0]->ToString()); 
std::string wordlist = std::string(*param2); //JS---->C++ 

爲UTF-8編纂會引起問題 'A' 'O' etc.etc。我怎樣才能改變編碼? ,我發現

一種解決方案是:

v8::String::AsciiValue param1(args[0]->ToString()); 

AsciiValue(在我的版本)不是類V8的一員::字符串。自從2011年創建該成員以來,這是不正常的。我的版本是0.12.0。

回答

0

服務器:

var wordlist = new Buffer(all_the_string,'ascii'); 
var something = addon.function(wordlist,wordlist.length); 

附加組件:

int wordlist_length = args[1]->NumberValue(); 
Local<Object> algo = args[0]->ToObject(); 
const char* buf = node::Buffer::Data(algo); 
std::string worlist_ascii; 
worlist_ascii.assign(buf, wordlist_length); 

使用Buffer,問題解決了。 版本0.12.0之後,AsciiValue不再用於nodejs。