Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие _ Utf8, QHttp и русский

Автор: ieroglif 13.5.2009, 16:34

есть сайт.
отправляю на него гетом дату. (пишу клиента к нему софтового).
на сайт отправляется русский текст.
файрбаг показывает превращение русской буквы "а" в %u0430.. а qt шными методами получается только %D0%B0
в чём засада?
уже готов написать тупой перекодировщик по массивам..

Автор: ViGOur 13.5.2009, 17:01

Как я понял получается, что ты сначала символ кириллицы кодируется в Юникоде ( UTF-8 ) в последовательность из двух байтов, а затем каждый байт этой последовательности записывается в шестнадцатеричном представлении (%D0%B0).

Тоесть делаешь то же, что нужно делать при правильном формировании URL.

Приведи код, получения даты и отправки.

Автор: ieroglif 13.5.2009, 17:36

прошу прощения.
проблема не в Utf8 а в юникоде.
просто не получается получить QString юникодовских символов из исходного QString с русским (и англ) текстом.

Автор: Litkevich Yuriy 13.5.2009, 18:11

Цитата(ieroglif @ 13.5.2009, 21:36) *
не получается получить QString юникодовских символов из исходного QString
не понял. Скажи какую кодировку тебе надо получить? В QString лежат строки в UTF-16.
И откуда ты берёшь строку?

Автор: ieroglif 13.5.2009, 20:11

есть веб чат.
сайт использует юникодовскую кодировку.
я пишу софтового клиента для него.
принимать данные я научился без проблем.
они приходят в утф8.
но вот отправляется строка в виде GET /chat_add.php?SESSID=aaaaaa&text=!!!!!! и вот в этом самом text лежит юникод русская строка.
причём я уже написал перекодировщик для русский букв. что бы подставлялист юникод значения.. почему-то сервер не хавает..
в общем, я очень печалюсь =(

Автор: Litkevich Yuriy 13.5.2009, 20:29

Цитата(ieroglif @ 14.5.2009, 0:11) *
юникодовскую кодировку.
Цитата(ieroglif @ 14.5.2009, 0:11) *
лежит юникод русская строка.
юникод понятие слишком растяжимое. Итак:
1) на сайте используется UTF-8
2) откуда берёшь строку для отправки? (зашито в коде или пользователь вводит через графический интерфейс или как-то ещё?)

Автор: BRE 13.5.2009, 20:51

Цитата(ieroglif @ 13.5.2009, 21:11) *
но вот отправляется строка в виде GET /chat_add.php?SESSID=aaaaaa&text=!!!!!! и вот в этом самом text лежит юникод русская строка.

А ты попробуй этот text прогнать через QUrl::toPunycode( text ).

Автор: ieroglif 13.5.2009, 21:18

не момогло...

Автор: BRE 13.5.2009, 21:38

Цитата(ieroglif @ 13.5.2009, 22:18) *
не момогло...

А попробуй через QUrl::toPercentEncoding( text ).

Punycode малость не то. Торможу. ;)

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)