Migration von QtWebKit zu QtWebEngine mit QWebChannel.QByteArray als String in Javascript über QWebChannel gesehen
Ich habe eine aufrufbare Funktion, die ein QVariant-Objekt an das Javascript sendet, das als JSON-Objekt angesehen wird. So ein QString
wird eine string
, ein QInt
ein int
usw.
Mit QtWebKit ohne QWebChannel, ein QByteArray als Uint8ClampedArray
gesehen wurde, aber jetzt direkt umgewandelt in eine string
UTF-8 verwenden (was meine QByteArray nicht ist:()
Habe ich etwas falsch gemacht Was soll ich tun
Hier ist der relevante Code Teil:?
//Qt Window class signal to javascript
void MyWindow::uplink(Response msg)
{
emit _nativeToJs(msg->toJson());
}
//Response class toJson() method
QVariantMap Response::toJson() const
{
QVariantMap map;
map["id"] = m_id; //qulonglong
map["src"] = QString(m_src);
map["dst"] = QString(m_dst);
map["status"] = m_status; //qint16
map["result"] = m_result; //QVariant, can be a map of string, arrays, etc
return map;
}
//Javascript
var foo;
new QWebChannel(qt.webChannelTransport, function(channel) {
//we connect the signal
channel.objects.foo._nativeToJs.connect(function(msg){
//msg is now a JSON object
});
});
msg.result
sollte ein geklammertes Array (msgpack data) enthalten, das ich später decodiere. Jetzt habe ich eine hässliche string
von nicht UTF-8 Zeichen interpretiert als UTF-8, mit dem ich nichts machen kann.