在服务器 Nodejs 中:
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。
最佳答案
服务器:
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 ,问题解决了。 Nodejs 0.12.0版本之后不再使用AsciiValue。
关于node.js - 字符串编码 - NodeJS 插件; v8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32764223/