QNetworkAccessManager::post
メソッドを使用してPOSTリクエストを送信したいのですが、私のJSONには±などの国際文字がいくつかあります。ユニコードのエスケープ文字列のバックスラッシュを置き換えます。
残念なことに私のWebAPIには、QByteArray
という形式の文字列をデコードする際にいくつかの問題があります。"\xC4\x99\xC4\x85"
です。
curl
で、私のAPIは、エスケープされた文字列とユニコードのエスケープ文字列:\u0119\u0105
で正常に動作します。
私はthisを試してみましたが、私はunicodeにQString
を変換した後QString
をエスケープ:
QString toUnicodeEscaped(const QString& str){
QString escaped;
escaped.reserve(6 * str.size());
for (QString::const_iterator it = str.begin(); it != str.end(); ++it) {
QChar ch = *it;
ushort code = ch.unicode();
if (code < 0x80) {
escaped += ch;
} else {
escaped += "\\u";
escaped += QString::number(code, 16).rightJustified(4, '0');
}
}
return escaped;
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString s = "ęą";
qDebug() << "s: " << toUnicodeEscaped(s);
}
私は2つのバックスラッシュで文字列を得た:私は1つのバックスラッシュではなくなしで2つのバックスラッシュを交換しようとした
s: "\\u0119\\u0105"
成功:
qDebug() << "s: " << toUnicodeEscaped(s).replace("\\\\","\\");
どうすれば交換できますか?