![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Петр91 |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 19 Регистрация: 10.6.2011 Пользователь №: 2731 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Опишу проблему и задачу в целом. Пользователь вводи русскую букву, а вы водиться третья буква от введеной пользователем. Т.е введенный вользовательский символ записывается в переменную, узнается код символа, и прибавляется число три допустим. Проблема возникла с кодировкой. раньше я прописывал
#ifdef Q_OS_WIN32 QTextCodec *codec = QTextCodec::codecForName("Windows-1251"); QTextCodec::setCodecForTr( codec ); QTextCodec::setCodecForCStrings( codec ); QTextCodec::setCodecForLocale( codec ); #endif А сейчас ничего что то не работает... |
|
|
Litkevich Yuriy |
![]()
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Если речь идёт о Qt, то и тему нужно создавать в разделе посвещённом Qt.
|
|
|
ilyabvt |
![]()
Сообщение
#3
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 297 Регистрация: 23.6.2011 Пользователь №: 2765 Спасибо сказали: 45 раз(а) Репутация: ![]() ![]() ![]() |
Попробуйте использовать UTF-8.
|
|
|
Петр91 |
![]()
Сообщение
#4
|
Студент ![]() Группа: Участник Сообщений: 19 Регистрация: 10.6.2011 Пользователь №: 2731 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Блин помогите! Я писал в консоли, а сейчас в гуи не могу перенести. Есть два text edit в одном текст открытый а в другом *зашифрованный*. Пишем открытый текст и он тут же шифруется, заменой текущей буквой на букву стоящей через 3. Я не могу разобраться с QString. ДА и вообще. Мне надо весь текст из text edita записывать в переменную, потом для каждого кода символа прибавить три. И отправить все в text edit. Я не могу из text edita получить текст. Идея такая:
char *p = new char; при изменении текста cin>>(вот тут из text edita)>> p; int i=0; int tr; while(p[i]!='\0') { tr=(int)(p[i]); p[i]=(char)(tr+3); } отправка в text edit2. Подскажите! |
|
|
Петр91 |
![]()
Сообщение
#5
|
Студент ![]() Группа: Участник Сообщений: 19 Регистрация: 10.6.2011 Пользователь №: 2731 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Простите за флуд! Спасибо, разобрался во всем. UTF-8 кодировка помогла
Простите за флуд! Спасибо, разобрался во всем. UTF-8 кодировка помогла |
|
|
Петр91 |
![]()
Сообщение
#6
|
Студент ![]() Группа: Участник Сообщений: 19 Регистрация: 10.6.2011 Пользователь №: 2731 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
И все таки снова проблема!! Имеется два текст эдит, в одном пишем символы в другом код символа. Вот код
main.cpp #ifdef Q_OS_WIN32 QTextCodec *codec = QTextCodec::codecForName("UTF-8"); QTextCodec::setCodecForTr( codec ); QTextCodec::setCodecForCStrings( codec ); QTextCodec::setCodecForLocale( codec ); #endif shifr.cpp void shifr::on_textEdit_textChanged() { F = this->ui->textEdit->toPlainText(); //В переменную F записываем текст int i = F.length(); // Узнаем длину строки QByteArray ar = F.toUtf8(); char *p = ar.data(); //QString to char int tr = (int)(p[i-1]); //Узнаем код последнего символа F = QString::number(tr); //Int to QString this->ui->textEdit_2->setText(F); //Выводим } С английскими символами все ок. A 97, B 98 и т.д. НО с русскими гг получается. Пишу русский символ А выводиться число -48, пишу еще раз А выводиться -80, потом все снова повторяется.с Б так же только -48 -79 с буквой Р -47 -128. Мне нужно чтобы код русс символов был последователен, и почему два числа постоянно меняются О.о |
|
|
ssoft |
![]()
Сообщение
#7
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 130 Регистрация: 17.2.2010 Из: Москва Пользователь №: 1470 Спасибо сказали: 30 раз(а) Репутация: ![]() ![]() ![]() |
UTF-8 для кодировки не латинских букв использует больше чем 1 байт.
Можно (и нужно) нарямую работать с текстовым кодеком. Например.
чтобы "зашифровать" символ
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#8
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
QTextCodec *codec = QTextCodec::codecForName("UTF-8"); это избыточно и опасно.QTextCodec::setCodecForTr( codec ); QTextCodec::setCodecForCStrings( codec ); QTextCodec::setCodecForLocale( codec ); Первая установка, кроме как на tr() и trUtf8() ни на что влиять не будет. Вторая будет влиять на все Си-строки (строковые литералы), например при работе с БД (и могут возникнуть проблемы) Третья - кодек локали, в случае если кодек локали отличается от системной - головники почти гарантированы. Можно (и нужно) нарямую работать с текстовым кодеком. солидарен
|
|
|
Петр91 |
![]()
Сообщение
#9
|
Студент ![]() Группа: Участник Сообщений: 19 Регистрация: 10.6.2011 Пользователь №: 2731 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Спасибо большое, за пример с объяснениями!
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 22.6.2025, 21:47 |