Russian Qt Forum
Ноябрь 23, 2024, 05:30 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Конвертация русской строки для передачи Http POST  (Прочитано 3793 раз)
PinkPanther
Самовар
**
Offline Offline

Сообщений: 169



Просмотр профиля
« : Август 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 в адресной строке?

Спасибо!
« Последнее редактирование: Август 31, 2009, 14:40 от PinkPanther » Записан

Эвтаназия - наше хобби!
Karl-Philipp
Гость
« Ответ #1 : Август 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}"
Записан
PinkPanther
Самовар
**
Offline Offline

Сообщений: 169



Просмотр профиля
« Ответ #2 : Август 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).

Одна проблема - результирующий пост в блоге веб-средствами ЖЖ не хочет ни редактироваться, не удаляться, жалуясь на проблемы кодировок. Приходится включать перекодирование для того, чтобы решить эту проблему.
Записан

Эвтаназия - наше хобби!
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 22.