QNetworkAccessManager::post
메서드를 사용하여 POST 요청을 보내려고하지만 내 JSON에는 ±과 같은 일부 국제 문자가 있습니다.유니 코드 이스케이프 문자열에서 백 슬래시 바꾸기
불행히도 내 WebAPI는이 문자열을 QByteArray
형식으로 디코딩하는 데 약간의 문제가 있습니다 : "\xC4\x99\xC4\x85"
.
curl
으로 내 API는 이스케이프 문자열 및 유니 코드 이스케이프 문자열 (\u0119\u0105
)과 함께 잘 작동합니다.
나는 this 시도하지만 유니 코드로 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);
}
:
s: "\\u0119\\u0105"
내가 한 백 슬래시하지만 두 개의 백 슬래시를 대체하는 시도 성공 :
qDebug() << "s: " << toUnicodeEscaped(s).replace("\\\\","\\");
어떻게 대체 할 수 있습니까?