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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: из UTF-8 в Windows-1251, потом urlencode  (Прочитано 9936 раз)
thechicho
Гость
« : Октябрь 01, 2011, 16:28 »

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

хелп плз, я в ступоре просто!

как фываолдж конвертировать в %F4%FB%E2%E0%EE%EB%E4%E6
средствами Qt?!
Записан
thechicho
Гость
« Ответ #2 : Октябрь 01, 2011, 17:59 »

QByteArray testenc = QUrl::toPercentEncoding("А");
дает %D0%90 (UTF-8)
а мне надо %C0 (Windows-1251)
как?!!!
Записан
SimpleSunny
Гость
« Ответ #3 : Октябрь 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]);
Записан
zenden
Гость
« Ответ #4 : Октябрь 01, 2011, 18:37 »

У QByteArray тоже есть метод toPercentEncoding.

Код
C++ (Qt)
QString pass = QString::fromUtf8("пароль_в_utf8");
QByteArray result = QTextCodec::codecForName("Windows-1251")->fromUnicode(pass).toPercentEncoding();
 
« Последнее редактирование: Октябрь 01, 2011, 18:46 от zenden » Записан
thechicho
Гость
« Ответ #5 : Октябрь 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 . хотя видел) но т.к. еще не очень понимаю с++, сам не допер.
сенкс:)
Записан
ivanmara
Гость
« Ответ #6 : Декабрь 28, 2014, 18:47 »

А как обратно конвертировать win1251 в utf-8 ...  то есть  %F4%FB%E2%E0%EE%EB%E4%E6 в удобочитаемое ?
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #7 : Декабрь 28, 2014, 20:10 »

А как обратно конвертировать win1251 в utf-8 ...  то есть  %F4%FB%E2%E0%EE%EB%E4%E6 в удобочитаемое ?

Есть to* значит должно быть from*, в общем fromPercentEncoding Улыбающийся
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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