我正在使用v8在本机(c ++)代码中使用JavaScript。要调用Javascript函数,我需要将所有参数转换为v8数据类型。 例如:Code to convert char* to v8 data type
char* value;
...
v8::String::New(value);
现在,我需要将unicode chars(wchar_t)传递给JavaScript。
首先,v8是否支持Unicode字符?如果是,如何将wchar_t / std :: wstring转换为v8数据类型?
答案 0 :(得分:3)
我不确定在问这个问题的时候是否是这种情况,但目前V8 API有许多支持UTF-8,UTF-16和Latin-1编码文本的功能:
https://github.com/v8/v8/blob/master/include/v8.h
创建新字符串对象的相关功能是:
或者,您可以避免复制字符串数据并构造引用现有数据(您控制其生命周期)的V8字符串对象:
答案 1 :(得分:0)
Unicode只是将字符映射到数字。您需要的是正确的编码,如UTF8或UTF-16。
V8似乎支持UTF-8(v8 :: String :: WriteUtf8)和一个没有进一步描述的16bit类型(写入)。我会尝试一下,然后写一些UTF-16。
在unicode应用程序中,windows将UTF-16存储在std :: wstring中。也许你尝试类似
的东西std::wstring yourString;
v8::String::New (yourString.c_str());
答案 2 :(得分:0)
以下代码完成了这个技巧
wchar_t path[1024] = L"gokulestás";
v8::String::New((uint16_t*)path, wcslen(path))
答案 3 :(得分:0)
不,它没有unicode支持,上面的解决方案没问题。