在服务器节点中:
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编纂会导致'ã''等问题。我怎样才能改变编纂?
我发现的一个解决方案是:
v8::String::AsciiValue param1(args[0]->ToString());
但是AsciiValue(在我的版本中)不是类v8 :: String的成员。这个成员是在2011年创建的,这是不正常的。我的版本是0.12.0。
答案 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之后,不再在nodejs中使用AsciiValue。