Название: QString c русскими символами в QByteArray Отправлено: lega4 от Май 13, 2011, 22:45 У меня есть некая QString с русскими словами. Мне ее надо отправить как параметр post-запроса в интернет. Но post принимает как параметр только QByteArray, поэтому приходится создавать его. Но после копирования строки в него, в нем получаются странные кракозябры((( И fromLocal8Bit пробовал, и другие from... Все равно одно и то же.
P.S. Я юзал поиск, понял только, что кириллицу в коде нормальные люди вообще не юзают и не рекомендуют. Но мне, как я уже написал, надо отправить post-запрос с кириллическими параметрами, без кириллицы никуда... Название: Re: QString c русскими символами в QByteArray Отправлено: blood_shadow от Май 13, 2011, 23:25 У меня есть некая QString с русскими словами. Мне ее надо отправить как параметр post-запроса в интернет. Но post принимает как параметр только QByteArray, поэтому приходится создавать его. Но после копирования строки в него, в нем получаются странные кракозябры((( И fromLocal8Bit пробовал, и другие from... Все равно одно и то же. кракозябры получаются из-за того что при конвертации с QString в QByteArray используется toLatin1() если кодекP.S. Я юзал поиск, понял только, что кириллицу в коде нормальные люди вообще не юзают и не рекомендуют. Но мне, как я уже написал, надо отправить post-запрос с кириллическими параметрами, без кириллицы никуда... не установлен, тебе нужно установить правильный кодек с помощью setCodecForCStrings() Название: Re: QString c русскими символами в QByteArray Отправлено: lega4 от Май 14, 2011, 07:55 А какой кодек надо поставить?
Сейчас данный кусок кода выглядит примерно так. В QLineEdit famedt пользователь вводит нечто на кириллице (В данном случае -фамилию). Код
Название: Re: QString c русскими символами в QByteArray Отправлено: blood_shadow от Май 14, 2011, 10:25 ту кодировку в какой будут символы,
можно так: Код документацию по кодеком ты похоже вообще не читал, нет там такого имени кодека "CP1251" Название: Re: QString c русскими символами в QByteArray Отправлено: lega4 от Май 14, 2011, 16:14 Цитировать QTextCodec *RusCodec = QTextCodec::codecForLocale(); Не сработало, те же кракозябры...>ту кодировку в какой будут символы, Эмм.. Не я же ее задаю, откуда я знаю. Строки будут вводится в LineEdit, собирается иь запускается это все под русской виндой. По дефолту наверно win-1251, но точно я не знаю. Цитировать документацию по кодеком ты похоже вообще не читал, нет там такого имени кодека "CP1251" Это с какой-то соседней темы был копипаст. Там про это ничего не говорили)Сейчас заиспользовал QTextCodec::availableCodecs() - CP1251 там есть, так что все ок) Название: Re: QString c русскими символами в QByteArray Отправлено: Авварон от Май 14, 2011, 17:19 QString::toUtf8
я слышал интернеты любят 8й утф Название: Re: QString c русскими символами в QByteArray Отправлено: lega4 от Май 14, 2011, 17:40 Авварон, интернеты-то любят, но пока речь о QByteArray :) А ему и .toUtf8() тоже не нравится, кракозябры...
Название: Re: QString c русскими символами в QByteArray Отправлено: Fat-Zer от Май 14, 2011, 19:17 Авварон, интернеты-то любят, но пока речь о QByteArray :) А ему и .toUtf8() тоже не нравится, кракозябры... а куда вы потом этот QByteArray отправляете, чтобы посмотреть?Название: Re: QString c русскими символами в QByteArray Отправлено: lega4 от Май 14, 2011, 19:44 Что значит "чтобы посмотреть"? Смотрю в среде разработки)
Отправляю в интернет, но тому сайту, куда отправляю, нужна кириллица, если туда приходят кракозябры, то он ругается... Название: Re: QString c русскими символами в QByteArray Отправлено: Fat-Zer от Май 14, 2011, 20:11 Что значит "чтобы посмотреть"? Смотрю в среде разработки) крякозябры вместо русского под дебагером - норма... проверяйте что текст в конкретной кодировке закодирован правильно по числовым кодам... а так - перекодируйте в ту кодировку, которую ожидает сервер.Отправляю в интернет, но тому сайту, куда отправляю, нужна кириллица, если туда приходят кракозябры, то он ругается... Название: Re: QString c русскими символами в QByteArray Отправлено: ритт от Май 14, 2011, 20:54 вот все заболели прям этим QTextCodec::setCodecForCStrings()...
Код: QString str=famedt->text(); lega4, какая кодировка нужна сайту? зы. читать QTextCodec::fromUnicode(). звать на правильном кодеке. Название: Re: QString c русскими символами в QByteArray Отправлено: lega4 от Май 14, 2011, 21:29 Сайту вроде UTF8 подойдет. Вот данные со сниффера, когда из браузера запрос делался
Цитировать Accept-Charset:iso-8859-1, utf-8, utf-16 Цитировать крякозябры вместо русского под дебагером - норма... Но ведь в QString я вижу нормальные русские буквы...Цитировать QString str=famedt->text(); Ага, и оно не работает...QByteArray arr; arr=""; arr+=str; а? что? и оно не работает? Название: Re: QString c русскими символами в QByteArray Отправлено: asvil от Май 14, 2011, 22:50 http://doc.qt.nokia.com/4.7/qurl.html#toEncoded ?
QUrl("http://www.google.ru/?q=фыва").toEncoded() Название: Re: QString c русскими символами в QByteArray Отправлено: ритт от Май 14, 2011, 23:17 Сайту вроде UTF8 подойдет. Вот данные со сниффера, когда из браузера запрос делался Цитировать Accept-Charset:iso-8859-1, utf-8, utf-16 Цитировать крякозябры вместо русского под дебагером - норма... Но ведь в QString я вижу нормальные русские буквы...Цитировать QString str=famedt->text(); Ага, и оно не работает...QByteArray arr; arr=""; arr+=str; а? что? и оно не работает? тогда снифф запроса целиком, плз и рабочего + дрянного ответа тоже - а то мы так долго угадывать будем... Название: Re: QString c русскими символами в QByteArray Отправлено: Fat-Zer от Май 15, 2011, 03:25 Но ведь в QString я вижу нормальные русские буквы... просто "везёт", в этом виноват помощник отладчика.... а вообще не знаю, что внутри QString'а творится...Название: Re: QString c русскими символами в QByteArray Отправлено: ритт от Май 15, 2011, 07:37 Но ведь в QString я вижу нормальные русские буквы... просто "везёт", в этом виноват помощник отладчика.... а вообще не знаю, что внутри QString'а творится...Название: Re: QString c русскими символами в QByteArray Отправлено: lega4 от Май 15, 2011, 08:45 Цитировать QUrl("http://www.google.ru/?q=фыва").toEncoded() ЕЕЕ! Оно работает) Спасибо) |