Russian Qt Forum

Qt => Вопросы новичков => Тема начата: thechicho от Октябрь 01, 2011, 16:28



Название: из UTF-8 в Windows-1251, потом urlencode
Отправлено: thechicho от Октябрь 01, 2011, 16:28
есть пароль (кириллица) в UTF-8.
необходимо его перевести в Windows-1251 (а может можно без перевода, сразу как-то?)
чтобы потом выполнить urlencode, как тут http://www.codenet.ru/services/urlencode-urldecode/ (http://www.codenet.ru/services/urlencode-urldecode/)
как это делается средствами Qt?


Название: Re: из UTF-8 в Windows-1251, потом urlencode
Отправлено: thechicho от Октябрь 01, 2011, 17:48
хелп плз, я в ступоре просто!

как фываолдж конвертировать в %F4%FB%E2%E0%EE%EB%E4%E6
средствами Qt?!


Название: Re: из UTF-8 в Windows-1251, потом urlencode
Отправлено: thechicho от Октябрь 01, 2011, 17:59
QByteArray testenc = QUrl::toPercentEncoding("А");
дает %D0%90 (UTF-8)
а мне надо %C0 (Windows-1251)
как?!!!


Название: Re: из UTF-8 в Windows-1251, потом urlencode
Отправлено: SimpleSunny от Октябрь 01, 2011, 18:19
Я делал как-то так так.
Код
C++ (Qt)
QString pass("russian_password");
QByteArray pass_t = pass.toLocal8bit().toHex();
QByteArray pass_o;
for (int i = 0; i < pass_t.size() / 2; ++i)
   pass_o.append("%").append(pass_t[i*2]).append(pass_t[i*2 + 1]);


Название: Re: из UTF-8 в Windows-1251, потом urlencode
Отправлено: zenden от Октябрь 01, 2011, 18:37
У QByteArray тоже есть метод toPercentEncoding.

Код
C++ (Qt)
QString pass = QString::fromUtf8("пароль_в_utf8");
QByteArray result = QTextCodec::codecForName("Windows-1251")->fromUnicode(pass).toPercentEncoding();
 


Название: Re: из UTF-8 в Windows-1251, потом urlencode
Отправлено: thechicho от Октябрь 01, 2011, 18:55
SimpleSunny, сенкс! но ваш код дает результат в нижнем регистре (может это и пофигу). но. числа неверно конвертирует.

zenden, ты гений. я почти же додумался до этого)

вот мои мытарства:
Код
C++ (Qt)
//QTextCodec *codec = QTextCodec::codecForName("Windows-1251");
//QByteArray test = codec->fromUnicode(password)
//QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
 
//QString password = "А";
//QString test = codec->toUnicode(password);
//QByteArray testenc = QUrl::toPercentEncoding("А");

не смог додуматься до QByteArray::toPercentEncoding . хотя видел) но т.к. еще не очень понимаю с++, сам не допер.
сенкс:)


Название: Re: из UTF-8 в Windows-1251, потом urlencode
Отправлено: ivanmara от Декабрь 28, 2014, 18:47
А как обратно конвертировать win1251 в utf-8 ...  то есть  %F4%FB%E2%E0%EE%EB%E4%E6 в удобочитаемое ?


Название: Re: из UTF-8 в Windows-1251, потом urlencode
Отправлено: gil9red от Декабрь 28, 2014, 20:10
А как обратно конвертировать win1251 в utf-8 ...  то есть  %F4%FB%E2%E0%EE%EB%E4%E6 в удобочитаемое ?

Есть to* значит должно быть from*, в общем fromPercentEncoding :)