Меню Рубрики

Qt linux русские буквы

Не отображаются русские символы и буквы в программе C++ и Qt.

Отображение русских символов в Qt

Добрый день, читатель. По умолчанию русские символы в программах с использованием Qt фреймворка отображаются некорректно. Вместо них используются непонятные знаки. Эта проблема появляется при открытии исходников программ, при выводе русских букв в консоль, при выводе русских букв в виджеты (Label, PlainText и т.д.). В этой статье содержатся решения этих проблем. На сайте уже имеется статья, в которой показано решение проблемы отображения русских букв при выводе в консоль на C++.

Русские символы в исходном коде

Бывает возникает проблема с кодировкой при открытии исходных текстов программ в Qt Creator, чаще всего такая проблема возникает у пользователей Windows. Дело в том, что при написании программы исходники иногда сохраняются в одной кодировке, а редактор в Qt Creator открывает по умолчанию в другой кодировке. Из-за этого вместо русских букв появляются кракозябры или знаки вопроса. По умолчанию в настройках редактора кода Qt Creator кодировка файлов устанавливается System, т.е. кодировка операционной системы. Linux чаще всего использует UTF-8, а Windows cp1251.

Проблема с кодировкой в редакторе Qt Creator

Для решения проблемы в верхнем меню Qt Creator следует выбрать Инструменты(Tools) — Параметры…(Settings…). В открывшемся окне слева в списке найти и выбрать Текстовый редактор(Text Editor), далее выбираем вкладку Поведение(Behavior). Находим группу настроек Кодировки файлов(Encoding files) и выбираем кодировку по умолчанию(default) — UTF-8. Теперь редактор будет открывать исходники в UTF-8, исходные тексты программ чаще всего пишутся именно в этой кодировке.

После настройки редактора следует перекодировать сами исходники. Это можно сделать в Notepad++, если вы пользователь Windows.

Можно открывать файлы и в других кодировках, для этого в верхнем меню следует выбрать Правка — Выбрать кодировку, а далее найти кодировку, в которой был сохранен исходник программы.

В итоге редактор будет сохранять исходники в новых проектах в UTF-8 и корректно открывать их после.

Русские символы в виджетах Qt

Помещая русские символы в поле Text в виджете Label или в другие виджеты, можно также столкнуться с проблемой отображения русских букв. В редакторе форм русские символы в виджеты устанавливаются и отображаются нормально, а вот при установки программным путем — нет.

Поместим русские символы в виджет Label и в PushButton в редакторе форм.

Русские символы в редакторе форм Qt

Как видно, они отображаются корректно. Далее скомпилируем и запустим программу.

Источник

Как вывести русские буквы в консольном приложении?

Консольное приложение запускается под Windows, там кодировка IBM 866. В программе используются функции ввода вывода из стандартной библиотеке Си. Как можно организовать вывод строк на русском?

Добавлено через 23 минуты
Тоесть текст программы написан в одной кодировке, в том числе и строки на русском языке, но вывести на экран их надо в кодировке IBM 866, есть ли в QT функции для конвертации символов?
В качестве строк используются массивы char ограниченные нулём.

Как вывести русские буквы в консольном приложении без Qt ?
Пробовал менять кодировки, но не помогло. #include using namespace std; int.

Как вывести граф в delphi (не консольном приложении)
Вопрос в названии темы) Есть задание, связанное с графами, делать я его еще не начал, до этого.

Греческие буквы в консольном приложении
Интересует возможность в консольной программе выводить на экран греческие буквы, такие как лямбда.

Не отображаются русские буквы в приложении на VC++.NET
Не отображаются русские буквы в заголовках меню. Вместо них обычные зюки, как при слетевших.

QTextCodec тебе поможет есть у же тут обсуждалось.
в функции main:

Прочитал только название темы и сразу решил помочь :). Но вижу, что не помогу. 🙁

Прочитал только название темы и сразу решил помочь :). Но вижу, что не помогу. 🙁

Спасибо, на вывод работает, а как сделать ввод?

Привет Мир!
тест
в?бв
Привет Мир!
тест
в?бв

Добавлено через 16 минут

Работает на вывод, а как сделать ещё и ввод?

Привет Мир!
test
test

(строка из входного потока не выводится, если она написана русскими буквами)

Источник

Qt,проверить русские буквы

Есть строка введенная в lineEdit и взятая оттуда. Нужно проверить ее на наличие русских букафф. Желательно с помощью QString.contains(). как это сделать, кто нибудь сталкивался?

ushort &QChar::unicode() возвращает utf16 (ucs-2) представление символа, дальше смотрим, попадает ли это число в интервал 0x0400-0x04FF — http://ru.wikipedia.org/wiki/Кириллица_в_Юникоде. Должно быть гораздо быстрее регэкспов.

и всё это будет зависеть от кодировки исходника.

Kosyak дал правильное решение.

и всё это будет зависеть от кодировки исходника.

и может не работать в msvs

Изначально я так и сделал, но потом зачем то сделал регексп[А-Я][а-я] вернее их коды в юникоде. Наверное лучше было бы проверять диапазон все же.

Источник

Русский язык в Qt

Подскажите пожалуйста, как можно добавить поддержку русского языка в приложение QT. Пишу в Visual Studio (так как с QT Creator не разобрался, траблы с дебагером).

Нужно что бы можно было обьявить переменную и занести в нее русский текст:

Пробовал такой код:

Если заношу текст в QByteArray , то все нормально, но я не могу с ним работать, мне далее нужно будет сравнивать строки. Если конвертирую в utf-8, то все равно кракозябра.

Подскажите пожалуйста, как можно это реализовать.

3 ответа 3

Должен работать вариант QString::fromLocal8Bit() , где локаль можно установить при помощи функции QTextCodec::setCodecForLocale() и QTextCodec::codecForName() , передав в последнюю Windows-1251:

Обратите внимание на то, что QString использует utf-16 , поэтому прямое копирование байтов в QString (например, через QByteArray ) может давать не те результаты.

Если вы хотите прямо в исходном коде строку задать, то можно QStringLiteral макрос из qt5 применить:

Это использует Юникодные константы ( u»» ), поэтому добавьте CONFIG += c++11 в ваш .pro файл.

Это более эффективный код, так как не происходит ненужного копирования и конвертирования из одной кодировки в другую ( u»» это UTF-16 и QString внутри UTF-16 + QStringLiteral magic).

Обратите внимание, что это никак не связано с кодировкой исходного кода ( input-charset ) и с кодировками, используемыми компилятором, для сохранения узких ( char ) и широких ( wchart_t ) строковых констант в исполняемом файле ( <,wide->exec-charset ). Это также не имеет отношения к кодировкам используемых во внешних файлах или данных переданных по сети, итд — суть в том что если данные у вас из другого источника, то решение специфичное для этого источника следует использовать (в разных контекстах, разные кодировки для текста могут быть).

input-charset , exec-charset это gcc имена. В VS это по другому настраивается Does VC have a compile option like ‘-fexec-charset’ in GCC to set the execution character set?. На Visual Studio 2015 Update 2 CTP можно , /utf-8 опцию попробовать, которая равнозначна /source-charset:utf-8 плюс /execution-charset:utf-8 , см. Specification of source charset encoding in MSVC++, like gcc «-finput-charset=CharSet».

Ваш код QString var = «Привет!»; может работать, если вы выставите аналог exec-charset в VS в utf-8 для qt5 (используется по умолчанию). QString var = u8″Привет!»; будет работать даже без изменения exec-charset (исходный код может быть к примеру в cp1251 и всё будет работать, если компилятор именно эту кодировку ожидает) — во время компиляции такие строки в utf-8 превращают. Но так как в любом случае QString использует utf-16 внутри, то такой код занимается ненужными преобразованиями текста из одной кодировки в другую.

Источник

Qt коддинг

Блог для тех, кто хотел бы изучить Qt, или узнать об этой библиотеке нечто новое

вторник, 6 ноября 2012 г.

Поддержка русского языка в приложениях на Qt

Одна из стандартных проблем, с которой встречается каждый разработчик из России, это поддержка русского языка в приложениях на Qt. По умолчанию русский текст выводится кракозябрами, и может потребоваться довольно много времени чтобы всё-таки разобраться как это устранить.

На практике же надо выполнить 2 простых действия.
1. Включить в Qt Creator по умолчанию UTF-8 кодировку. Для этого необходимо зайти в Инструменты->Параметры и настроить кодировку как на рисунке ниже:

2. Подключить текстовый кодек в main.cpp . После изменений main.cpp станет выглядеть следующим образом:

3 комментария:

Спасибо большое, интересно было почитать, ну и естественно завтра проверю.:))
Не могли бы вы сделать урок про передачу данных по UDP протоколу, т.е. реализация сервера и клиента с передачей массива байтов и последующей его расшифровкой в клиенте и выводом, ну к примеру в QLineEdit.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Образы mac os для virtualbox
  • Образ операционной системы mac os
  • Образ виртуальной vmware mac os
  • Образ rdr mac os
  • Образ mac os загрузочный