In meiner C++ Code, den ich habe:v8 C++ Api: pass nicht-englische Zeichenketten von JavaScript zu C++
Handle<ObjectTemplate> globalTemplate = ObjectTemplate::New();
globalTemplate->Set(String::New("print"), FunctionTemplate::New(printMessage));
Handle<Context> context = Context::New(NULL, globalTemplate);
Die Printmessage-Funktion ist definiert als:
Handle<Value> printMessage(const Arguments& args)
{
Locker locker;
HandleScope scope;
if(args.Length())
{
String::Utf8Value message(args[0]->ToString());
if(message.length())
{
//Print the message to stdout
printf("%s", *message);
bool newline = true;
if(args.Length() == 2)
{
newline = args[1]->ToBoolean()->BooleanValue();
}
if(newline) printf("\n");
return scope.Close(Boolean::New(true));
}
}
return Undefined();
}
, wenn ich diese Funktion aufrufen aus JavaScript:
print("Привет");
Ich sehe "пїЅпїЅпїЅпїЅпїЅпїЅ" anstelle von Zeichenfolge.
Was war mit diesem Code falsch?
ist die Konsole richtig eingerichtet Unicode angezeigt werden? Es ist möglicherweise besser, die Integralwerte der gesuchten Byte manuell zu überprüfen, anstatt sie auszudrucken, um zu überprüfen, ob die Daten korrekt sind und die Anzeige der Daten nicht Ihren Erwartungen entspricht oder wenn es sich um Rohdaten handelt eigentlich falsch. – xaxxon