Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Qt
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Kibalchish
0 / 0 / 0
Регистрация: 02.05.2017
Сообщений: 10
1

Qt кодировка кириллицы

11.10.2017, 21:34. Просмотров 1827. Ответов 8
Метки нет (Все метки)

Всё никак могу разобраться с кодировкой. Необходимо объекту b присвоить символ б, но приведённый ниже код это не делает, хотя через поток ввода в объект a символ б записывается корректно (т.е. 'б' будет соответствовать коду в ACSII, как мне надо)

C++
1
2
3
4
5
 char a,b='б';
 int c1,c2=b;
 cin>>a;  // a='б'
 c1=a;
 cout<<a<<"="<<c1<<" and "<<b<<"="<<c2<<'\n';
Qt выдаёт предупреждение:
warning: multi-character character constant [-Wmultichar]
char a,b='Р±';
^
^
Но найти и придумать, что надо сделать, чтобы при присвоении 'б' оставалась 'б', а не краказяброй, не могу.
Прошу помочь)
0
Миниатюры
Qt кодировка кириллицы  
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2017, 21:34
Ответы с готовыми решениями:

Кодировка кириллицы
Всем Доброго времени суток.Люди помогите разобраться а то после 2х часов GooglA я уже вообще ничего...

Кодировка кириллицы в парсере
Привет. не пойму в чем дело. простой парсер на curl. сайт в windows-1251. во время парсинга...

Пресловутая кодировка кириллицы
Здравствуйте, есть такой код #include &lt;iostream&gt; #include &lt;windows.h&gt; // для SetConsoleCP()...

Отображение кириллицы (кодировка)
Если язык системы не русский отображается кракозябра менять в реестре значения cp1251 не дело, так...

Кодировка при шифровании кириллицы
Недавно только перешол на виделеній сервер, ищё ево толком не знаю. Когда шыфрую строку и вывожу...

8
Kibalchish
0 / 0 / 0
Регистрация: 02.05.2017
Сообщений: 10
11.10.2017, 21:56  [ТС] 2
Вывод программы:
б
б=-95 and ▒=-79
0
nmcf
6535 / 5758 / 2622
Регистрация: 14.04.2014
Сообщений: 24,498
11.10.2017, 23:30 3
Если дело только в одной букве, задай её кодом.
0
Kibalchish
0 / 0 / 0
Регистрация: 02.05.2017
Сообщений: 10
12.10.2017, 05:32  [ТС] 4
Проблема со всеми русскими символами, Qt их перекодирует/меняет ещё до присвоения. Решение проблемы мне обходимо в другом проекте
0
12.10.2017, 05:32
Rius
Эксперт .NET
6174 / 4005 / 962
Регистрация: 25.05.2015
Сообщений: 12,126
Записей в блоге: 12
Завершенные тесты: 4
12.10.2017, 06:21 5
Kibalchish, в современном Qt строки кодируются в UTF-8, для кириллицы это два байта на символ.
Вам нужен ввод/вывод с консоли? Под какой операционкой?
0
Kibalchish
0 / 0 / 0
Регистрация: 02.05.2017
Сообщений: 10
12.10.2017, 09:58  [ТС] 6
Ввод/вывод мне не нужен. Мне нужно использовать символьные литералы кириллицы в операциях =, <, >, <=, >=, == для реализации булевской функции, которая даёт ответ на вопрос: стоят ли две русские буквы в алфавитном порядке или нет?
ОС - Windows

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
int lettersOrder(const char& a,const char& b)
  {
//if(!(((a>=128&&a<=159||a==240)&&(b>=128&&b<=159||b==240))||                                 // a и b заглавные буквы
//    (a>=160&&a<=175||a>=224&&a<=239||a==241)&&(b>=160&&b<=175||b>=224&&b<=239||b==241)))    // a и b незаглавные
  if(!(((a>='А'&&a<='Я'||a=='Ё')&&(b>='А'&&b<='Я'||b=='Ё'))||                                 // a и b заглавные буквы
      (a>='а'&&a<='п'||a>='р'&&a<='я'||a=='Ё')&&(b>='а'&&b<='п'||b>='р'&&b<='я'||b=='Ё')))    // a и b незаглавные
   return 0;
  if(a==b)
   return 3;                 // 3 - буквы одинаковые
  if(b=='ё')                 // 2 - неалфавитный порядок
   {                         // 1 - алфавитный порядок
   if(a=='е')                // 0 - некорректные входные данные
    return 1;
   else
    b='е';
   }
  if(a=='ё')
   {
   if(b=='е')
    return 2;
   else
    a='е';
   }
  if(b=='Ё')
   {
   if(a=='Е')
    return 1;
   else
    b='Е';
   }
  if(a=='Ё')
   {
   if(b=='Е')
    return 2;
   else
    a='Е';
   }
  if(a<b)
   return 1;
  if(a>b)
   return 2;
  return 0;
  }
0
Rius
Эксперт .NET
6174 / 4005 / 962
Регистрация: 25.05.2015
Сообщений: 12,126
Записей в блоге: 12
Завершенные тесты: 4
12.10.2017, 10:35 7
Лучший ответ Сообщение было отмечено Kibalchish как решение

Решение

Kibalchish, пишете на Qt? Тогда используйте QString и QChar. Исходники программы сохраняйте в Utf-8. Версию Qt используйте не ниже 5.0.

Добавлено через 8 минут
Также постарайтесь не прописывать коды символов непосредственно как числа.
Коды символов: Представление кириллицы в UTF-8
1
Kibalchish
0 / 0 / 0
Регистрация: 02.05.2017
Сообщений: 10
12.10.2017, 23:09  [ТС] 8
Спасибо, так дальше работать уже можно, но с QChar всё равно приходиться мудрить (по-другому не придумал), потому что проблема c присвоением русской буквы в одинарных кавычках остаётся. Поэтому задание отдельного символа в качестве кода UNICODE будет, наверно, оптимальным вариантом.
C++
1
2
3
 QString a="абвгдеё";
 QChar b=static_cast<QString>("ё")[0];
 QChar c=1105;
0
Миниатюры
Qt кодировка кириллицы  
Rius
Эксперт .NET
6174 / 4005 / 962
Регистрация: 25.05.2015
Сообщений: 12,126
Записей в блоге: 12
Завершенные тесты: 4
12.10.2017, 23:34 9
Это излишне.
C++ (Qt)
1
2
3
4
5
6
QString a = "ёёё";
QChar b = QChar(L'ё');
quint32 c = b.unicode();
QChar d = a.at(0);
bool e = (d == b);
quint32 f = a.at(0).unicode();
Локальные переменные
a "ёёё" QString
b 'ё' 1105 0x0451 QChar
c (hex) 451 quint32
d 'ё' 1105 0x0451 QChar
e true bool
f (hex) 451 quint32
Посмотрите в справке возможности QChar, можете найти много полезного.
1
12.10.2017, 23:34
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.10.2017, 23:34

Кодировка кириллицы в тексте программы
Копирую текст кода макроса в Ворд, и все слова кириллицей превращаются в &quot;крякозябры&quot;. Как...

Правильная кодировка для кириллицы
cout &lt;&lt; &quot;Я учусь програмировать на С++.У меня стоит компилятор Dev C++.Проблема в том,что когда я...

Кодировка. Отображение кириллицы. 2012
Установил недавно SqlServer 2012. Если данные вносить в таблицу в среде разработки, всё нормально....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.