字符串编码 - NodeJS插件; V8

时间:2015-09-24 14:40:05

标签: node.js 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编纂会导致'ã''等问题。我怎样才能改变编纂?

我发现的一个解决方案是:

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

但是AsciiValue(在我的版本中)不是类v8 :: String的成员。这个成员是在2011年创建的,这是不正常的。我的版本是0.12.0。

1 个答案:

答案 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。