Название: [РЕШЕНО] Конвертация русской строки для передачи Http POST Отправлено: PinkPanther от Август 31, 2009, 11:39 Добрый день, уважаемые коллеги!
Столкнулся с задачей отправить текст в ЖЖ (livejournal.com) посредством их flat-интерфейса (http://www.livejournal.com/doc/server/ljp.csp.guide.intro.html). Он не хочет принимать ни кириллицу, ни спец. символы, требуя вместо них код ascii в формате %hh (насколько понял, h - это hex-символ). Нет ли в Qt ф-ции, которая бы приводила все символы входного текста в вид %hh, т.е. в вид, в котором они появляются при отправке данных форм методом get в адресной строке? Спасибо! Название: Re: Конвертация русской строки для передачи Http POST Отправлено: Karl-Philipp от Август 31, 2009, 11:51 не уверен, но возможно поможет
http://doc.trolltech.com/4.5/qurl.html#toPercentEncoding Цитировать QByteArray QUrl::toPercentEncoding ( const QString & input, const QByteArray & exclude = QByteArray(), const QByteArray & include = QByteArray() ) [static] Returns an encoded copy of input. input is first converted to UTF-8, and all ASCII-characters that are not in the unreserved group are percent encoded. To prevent characters from being percent encoded pass them to exclude. To force characters to be percent encoded pass them to include. Unreserved is defined as: ALPHA / DIGIT / "-" / "." / "_" / "~" QByteArray ba = QUrl::toPercentEncoding("{a fishy string?}", "{}", "s"); qDebug(ba.constData()); // prints "{a fi%73hy %73tring%3F}" Название: Re: Конвертация русской строки для передачи Http POST Отправлено: PinkPanther от Август 31, 2009, 13:05 не уверен, но возможно поможет http://doc.trolltech.com/4.5/qurl.html#toPercentEncoding Спасибо! Частично проблема решена (во всяком случае один пост с русскими буквами робот как-то создал). Сделал такой блок в начале: QTextCodec *utfcodec = QTextCodec::codecForName("cp1251"); QTextCodec::setCodecForTr(utfcodec); QTextCodec::setCodecForCStrings(QTextCodec::codecForName("cp1251")); А потом, с помощью ф-ции QByteArray::toLocal8Bit переделал всё в 8 бит и перевёл в % с помощью QUrl::toPercentEncoding(QString). Одна проблема - результирующий пост в блоге веб-средствами ЖЖ не хочет ни редактироваться, не удаляться, жалуясь на проблемы кодировок. Приходится включать перекодирование для того, чтобы решить эту проблему. |