node.js - 字符串编码 - NodeJS 插件; v8

标签 node.js v8

在服务器 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/

相关文章:

node.js - 为什么 node.js 处理 setTimeout(func, 1.0) 不正确?

javascript - 如果 Google 应用程序脚本中省略了 var/const,我的 getter 会执行什么?

javascript - 在 Node 服务器上使用 mongoose 将分层 Node 从 json 文件保存到 mongodb 中

javascript - 在 JavaScript 中安排任务(Node webkit 项目)

javascript - 为什么 typeof null 的值在循环内改变?

javascript - Error 对象的堆栈是什么时候产生的?

c++ - 在 V8 javascript 引擎中,如何为每个实例创建一个重用 ObjectTemplate 的构造函数?

node.js - 如果从 gulp 启动,则使用 pm2 启动应用程序

node.js - Node.js 中的 XML 到 PEM

node.js - 跨文件拆分时使用 router.use 表示路由器未定义参数