![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Гость_Саша_* |
![]()
Сообщение
#1
|
Гости ![]() |
Я вот тоже как раз с кодировками мучаюсь.
Но у меня вопрос с кодировкой для класса QHttp Как мне корректно создать запрос HTML-странички в URL-е которой имеются русские буквы. Скажем как запросить страничку с адресом "http://aaa.ru?text=абвгде&submit=ok" ? На самом деле "абвгде" как я понял должны быть преобразованы в %E0%E1%E2%E3%E4%E5, т.е. запрос должен быть таким: http://aaa.ru?text=%E0%E1%E2%E3%E4%E5&submit=ok, но вот как получить эти самые %E0%E1%E2%E3%E4%E5 я не знаю. Нашёл только ф-ю QUrl::encode, но она для каждого русского символа делает двухбайтное значение, т.е. что-то типа %С3%AA |
|
|
ViGOur |
![]()
Сообщение
#2
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Так:
Проверено в yandex'e... ![]() |
|
|
archimed7592 |
![]()
Сообщение
#3
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 127 Регистрация: 27.12.2007 Из: Moscow Пользователь №: 56 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Гость_Саша_* |
![]()
Сообщение
#4
|
Гости ![]() |
Так: Проверено в yandex'e... ![]() А если в Qt 3.3.4? Там такой ф-ии (toEncoded) нет |
|
|
archimed7592 |
![]()
Сообщение
#5
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 127 Регистрация: 27.12.2007 Из: Moscow Пользователь №: 56 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
archimed7592 |
![]()
Сообщение
#6
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 127 Регистрация: 27.12.2007 Из: Moscow Пользователь №: 56 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
AFAICS, encode'ить в любом случае придётся...
|
|
|
Гость_Саша_* |
![]()
Сообщение
#7
|
Гости ![]() |
AFAICS, encode'ить в любом случае придётся... Не понял... Значит так, я, для получения правильно закодированной строки написал такую ф-ю: CODE QString GetUrlEncode( QString str ) { const char *sss = str.ascii(); // просто для проверки QString str2 = QTextCodec::codecForLocale()->fromUnicode(str); sss = str2.ascii(); // просто для проверки QUrl::encode( str2 ); sss = str2.ascii(); // просто для проверки return str2; } И она возвращает 2-х байтовые значения русских символов. Т.е. символ 'к' преобразуется в %C3%AA |
|
|
Litkevich Yuriy |
![]()
Сообщение
#8
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
QUrl::encode, но она для каждого русского символа делает двухбайтное значение, т.е. что-то типа %С3%AA в UTF-16 два байта, в UTF-8 для русского тоже 2 байта, см. здесь |
|
|
Гость_Саша_* |
![]()
Сообщение
#9
|
Гости ![]() |
QUrl::encode, но она для каждого русского символа делает двухбайтное значение, т.е. что-то типа %С3%AA в UTF-16 два байта, в UTF-8 для русского тоже 2 байта, см. здесь Понятно... Так и что же делать? Мне кажется легче вручную каждую букву перекодировать ф-ей sprintf( str, "%%%02X", c ), чем тратить ещё не знаю сколько времени, чтобы найти ф-ю делающую тоже самое... |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 12.6.2025, 18:43 |