Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.96/51: Рейтинг темы: голосов - 51, средняя оценка - 4.96
1 / 1 / 0
Регистрация: 08.11.2017
Сообщений: 17
1

Кодировка в Qt

11.03.2018, 21:39. Просмотров 10300. Ответов 22
Метки нет (Все метки)


Раньше спокойно работа в Qt v5.10 и использовал русский язык при выводе сообщений об ошибке через QMessageBox, и все выводило, что и предполагалось. Но потом скачал, по кое-каким причинам, решил скачать QtSDK-> Qt изменилась версия программы на ~4.5 Потом там начались проблемы , что появлялись знаки вопроса в черном ромбе, вместо русскоязычных слов

Пытался найти ответ в интернете, но попытки сменить кодировку в параметрах среды, или даже используя QTextCodec - никак не изменило погоду...Удалил потом в "программах и компонентах" все Qt которые были установлены (в том числе и QtSDK).
Установил снова изначальную версию Qt, на которой все ок было - но проблема так и осталась.

код с файла mainwindow.срр
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
void MainWindow::on_pushButton_clicked()
{
    QMessageBox::critical(this,"Erro", "Ошибка");
}

код с файла main.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
#include "mainwindow.h"
#include <QApplication>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
 
    return a.exec();
}
При нажатии на кнопку pushButton в формочке выскакивает следущее
0
Миниатюры
Кодировка в Qt  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.03.2018, 21:39
Ответы с готовыми решениями:

Кодировка программы и кодировка базы данных
В общем в архиве стандартный пример и одна из программ по редактированию sqlite. Проблема...

Кодировка БД
Здравствуйте. Тут такая проблема. Вывод файла в целом происходит нормально кроме одного момента....

Кодировка
Проблема в следующем, есть парсер, который достаёт контент с сайта с кодировкой windows-1251, и на...

Кодировка
Всем доброй ночи! Так исторически сложилось, что кодировка сайта windows-1251 подключаю скрипт ...

22
Эксперт С++
8354 / 6101 / 610
Регистрация: 10.12.2010
Сообщений: 28,390
Записей в блоге: 29
11.03.2018, 23:00 2
Лучший ответ Сообщение было отмечено Programmsit как решение

Решение

Кодировка самих файлов исходников проекта должна быть в utf-8, скорее всего это не так.
1
1 / 1 / 0
Регистрация: 08.11.2017
Сообщений: 17
12.03.2018, 00:58  [ТС] 3
Сменил кодировку ... та же проблема
А вообще у меня Windows 10. изначально ставил вместо UTF-8 - CP1251
0
Миниатюры
Кодировка в Qt   Кодировка в Qt  
Эксперт С++
8354 / 6101 / 610
Регистрация: 10.12.2010
Сообщений: 28,390
Записей в блоге: 29
12.03.2018, 01:11 4
Лучший ответ Сообщение было отмечено Programmsit как решение

Решение

Цитата Сообщение от Programmsit Посмотреть сообщение
изначально ставил вместо UTF-8 - CP1251
И кто Вам доктор ?

Теперь берете свои все исходники и открывайте в Notepad++ (или с помощью другой программы) и перегоняйте в UTF-8
2
4 / 4 / 3
Регистрация: 28.08.2017
Сообщений: 81
12.03.2018, 12:48 5
trUtf8 в помощь.
Еще на просторах интернета нашел использование QTextCodec, но сам еще не использовал
C++ (Qt)
1
2
3
4
    QTextCodec *utfcodec = QTextCodec::codecForName("UTF-8");
    QTextCodec::setCodecForTr(utfcodec);
    QTextCodec::setCodecForCStrings(utfcodec);
    QTextCodec::setCodecForLocale(utfcodec);
0
Эксперт .NET
7522 / 5016 / 1194
Регистрация: 25.05.2015
Сообщений: 15,297
Записей в блоге: 14
12.03.2018, 12:54 6
Qt в версии 5 полностью переехал на UTF-8.
Поэтому храните исходники в UTF-8. А эти костыли с просторов интернета не нужны.
0
4 / 4 / 3
Регистрация: 28.08.2017
Сообщений: 81
12.03.2018, 12:56 7
Rius, сижу на четвертой, поэтому и пользуюсь этими костылями.
0
Эксперт .NET
7522 / 5016 / 1194
Регистрация: 25.05.2015
Сообщений: 15,297
Записей в блоге: 14
12.03.2018, 13:01 8
C++ API changes
QObject::trUtf8() and QCoreApplication::Encoding are deprecated. Qt assumes that the source code is encoded in UTF-8.
Цитата Сообщение от WhitePower_ Посмотреть сообщение
сижу на четвертой, поэтому и пользуюсь этими костылями.
Сидите... Вопрос о пятой:
Цитата Сообщение от Programmsit Посмотреть сообщение
Qt v5.10
0
4 / 4 / 3
Регистрация: 28.08.2017
Сообщений: 81
12.03.2018, 13:09 9
Rius,
Цитата Сообщение от Programmsit Посмотреть сообщение
Установил снова изначальную версию Qt, на которой все ок было - но проблема так и осталась.
, вот к чему. Человек вернулся к 4-ке
0
Эксперт .NET
7522 / 5016 / 1194
Регистрация: 25.05.2015
Сообщений: 15,297
Записей в блоге: 14
12.03.2018, 13:11 10
Цитата Сообщение от WhitePower_ Посмотреть сообщение
Человек вернулся к 4-ке
"Изначальная" - 5.10.
Прочитайте первый пост, внимательно

4.5 это версия Qt Creator.
0
Avazart
12.03.2018, 13:49
  #11

Не по теме:

Цитата Сообщение от Rius Посмотреть сообщение
А эти костыли с просторов интернета не нужны.
Разве что написать автоматический конвертер файлов с 1251 в utf-8 используя QTextCodec

0
1 / 1 / 0
Регистрация: 08.11.2017
Сообщений: 17
12.03.2018, 14:27  [ТС] 12
Все исправил !

Добавлено через 6 минут
Все исправил !

Исправил следующим образом:
1)заходил в тот файл, где была не определен русский язык
2)обводил весь код
3)скопировал его с помощью Ctrl + C
4)в левом верхнем углу выбрал Правка->Выбрать Кодировку->UTF-8
Там потом появляются в коде вместо русских букв знаки вопроса(ну может какие-либо другие кваказябры).
5)вместо всего кода вставляем скопированный ранее код и запускаем программу забивая на все предупреждения программы, если он будет ругаться.
и Вуаля - все работает корректно
1
310 / 113 / 19
Регистрация: 29.06.2019
Сообщений: 1,168
30.09.2020, 13:16 13
Цитата Сообщение от Programmsit Посмотреть сообщение
Выбрать Кодировку->UTF-8
можно просто в Инструменты(Tools) — Параметры…(Settings…). В открывшемся окне слева в списке найти и выбрать Текстовый редактор(Text Editor), далее выбираем вкладку Поведение(Behavior). Находим группу настроек Кодировки файлов(Encoding files) и выбираем System.
Закрываем qt, открываем снова проект
Linux чаще всего использует UTF-8, а Windows cp1251.
System - согласно системным настройкам
0
Эксперт .NET
7522 / 5016 / 1194
Регистрация: 25.05.2015
Сообщений: 15,297
Записей в блоге: 14
30.09.2020, 13:46 14
JeyCi, не надо System, надо UTF-8.
Цитата Сообщение от Rius Посмотреть сообщение
Qt в версии 5 полностью переехал на UTF-8.
С другими кодировками могут понадобиться дополнительные костыли.
1
Эксперт С++
8354 / 6101 / 610
Регистрация: 10.12.2010
Сообщений: 28,390
Записей в блоге: 29
30.09.2020, 14:46 15
Для MSVC нужен не просто UTF-8, а UTF-8 с BOOM
1
310 / 113 / 19
Регистрация: 29.06.2019
Сообщений: 1,168
30.09.2020, 16:21 16
Цитата Сообщение от Rius Посмотреть сообщение
С другими кодировками могут понадобиться дополнительные костыли.
поставила Qt Creator 4.5 и 5.12.0-mingw73_32 -- что нашла у себя (чтобы пока не качать снова) -- посмотреть пример проекта... запросом сказал, что не может найти UTF-8, попросил поправить кодировку - из предложенных UTF-8 не оказалось...
но спасибо за предупреждения -
Цитата Сообщение от Rius Посмотреть сообщение
Qt в версии 5 полностью переехал на UTF-8.
наверно, что нашла у себя (4.5) ещё не переехал, а мой tool-chain уже от 5.12 -- вот и не знаю откуда корни проблемы?...
Цитата Сообщение от Rius Посмотреть сообщение
С другими кодировками могут понадобиться дополнительные костыли.
какие-то конкретные? или свои для разных случаев?
0
Эксперт .NET
7522 / 5016 / 1194
Регистрация: 25.05.2015
Сообщений: 15,297
Записей в блоге: 14
30.09.2020, 16:38 17
Цитата Сообщение от JeyCi Посмотреть сообщение
из предложенных UTF-8 не оказалось...
Не понятно, что и где ищется, но UTF-8 тут должен быть:
Кодировка в Qt

Цитата Сообщение от JeyCi Посмотреть сообщение
наверно, что нашла у себя (4.5) ещё не переехал, а мой tool-chain уже от 5.12 -- вот и не знаю откуда корни проблемы?...
4.5 это видимо Qt Creator.
Важна версия самого Qt, 5.12.
Цитата Сообщение от JeyCi Посмотреть сообщение
какие-то конкретные? или свои для разных случаев?
В Qt 4 приходилось указывать, какая именно кодировка использовалась в файлах исходников. А потом её ещё и соблюдать не забывать.
В Qt 5 исходники подразумеваются в UTF-8.
File Encoding
Qt 5 requires UTF-8 encoded source files, and therefore the default encoding was changed from System to UTF-8 in Qt Creator version 2.6. However, the Default encoding field still displays the value System if the default system encoding is set to UTF-8.
Strings and encodings in Qt
  • Encode your source code files using UTF-8. Set all your tools (editors, etc.) to read and write UTF-8 files. Do it once, for all your code base, and make your colleagues stick with it.
  • Make your compiler read UTF-8 files. Changing your locale to an UTF-8 locale should be enough (otherwise, see your compiler's manual).
1
310 / 113 / 19
Регистрация: 29.06.2019
Сообщений: 1,168
30.09.2020, 16:46 18
Цитата Сообщение от Rius Посмотреть сообщение
В Qt 4 приходилось указывать, какая именно кодировка использовалась в файлах исходников. А потом её ещё и соблюдать не забывать.
всё, поняла... проект, видимо, был от v4, т.к. была ещё ошибка файл ‘QtGui / QAction’ не найден - тоже исправляла (от 4-й до 5-й)
Кликните здесь для просмотра всего текста
Установите версию на Qt5, измените все #include<QtQui/*>с в #include<QtWidgets/*>,
И добавить QT += widgets в вашем .pro файле.
Перестройте проект, когда вы снова получите сообщение об ошибке, нажмите на сообщение об ошибке и измените #include<QtQui/*>с в #include<QtWidgets/*> тоже.

спасибо за столь подробный ответ!..
Цитата Сообщение от Rius Посмотреть сообщение
Важна версия самого Qt, 5.12.
- это радует
0
310 / 113 / 19
Регистрация: 29.06.2019
Сообщений: 1,168
30.09.2020, 16:54 19
Цитата Сообщение от Rius Посмотреть сообщение
UTF-8 тут должен быть:
- тут он есть, но ошибка такая вылазит при открытии проекта - и когда там нажимаешь выбрать кодировку - в появляющемся окне нет utf-8
0
Миниатюры
Кодировка в Qt  
310 / 113 / 19
Регистрация: 29.06.2019
Сообщений: 1,168
30.09.2020, 16:59 20
выбирала System - и все комменты на рус.яз ок становились

Добавлено через 4 минуты
вобщем, перепишу комменты и пересохраню...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.09.2020, 16:59

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Кодировка
Хочу установить везде кодировку ютф-8 не получается, пробую по статье:...

Кодировка
Как решить на моем сайте проблему с кодировкой &lt;нерабочая ссылка&gt; все перепробовал!1

Кодировка!
Привет, прочитал статейки, как изменить кодировку, НО у меня БД в UTF8 и связи мускула тоже...

Кодировка
Доброе время суток. На днях столкнулся с работой некоего умника, другими словами человека, который...

Кодировка
Когда сохраняю html документ в кодировке UTF-8 без BOM то при открытии на локальном сервере...

Кодировка
Доброе время суток. Поздравляю всех с 9 мая!!!!! Я навичек в JAVA и хоел бы попросить Вас знащих...


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

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

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