Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
 Аватар для Ender Che
517 / 407 / 77
Регистрация: 29.05.2018
Сообщений: 1,318

Поломана кодировка в QSqlTableModel

02.10.2025, 19:25. Показов 2130. Ответов 49
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер.

Нужно запихнуть словарь существительных в базу данных. Нашёл подходящий список, скачал. Стал заводить в базу данных. Решил в середине процесса тормознуться и посмотреть, что там получилось. А там - кракозябры выдаёт QSqlTableModel, выведенная на QTableView.

Как так-то? Файл (текстовый) со списком существительных вроде UTF-8...
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.10.2025, 19:25
Ответы с готовыми решениями:

QSqlTableModel и QSqlQuery не видят некоторые строки выборки
Добрый день! Есть проект, где в БД SQLite пишутся данные по работе с клиентами. Каждая запись -...

завсисимость полей в QtableView + QSqlTableModel
Товарищи суть такая. Работаю с использованиеем связки QtableView + QSqlTableModel. Подскажите...

QTableView и QSqlTableModel
Пытаюсь вывести в QTableView модель из QSqlTableModel. Буквально на пол секунды в TableView...

49
Заблокирован
07.10.2025, 21:41
Студворк — интернет-сервис помощи студентам
И к тому же, сдается мне, что readAll() - это неформатированное чтение, а значит и кодек никто не будет применять.
А конструктор я показал.

Можно взять Qt 5 и провести пару простых до безобразия экспериментов.
Но мне суть и так ясна, кажется.

Но у меня нет Qt 5.
И я тут вспомнил:
Кликните здесь для просмотра всего текста



0
1131 / 727 / 194
Регистрация: 30.03.2021
Сообщений: 2,378
07.10.2025, 21:44
Я понял
Потом как нить еще поэксперементячу на Qt 5 может быть
0
 Аватар для Ender Che
517 / 407 / 77
Регистрация: 29.05.2018
Сообщений: 1,318
07.10.2025, 21:45  [ТС]
Цитата Сообщение от SmallEvil Посмотреть сообщение
Можно взять Qt 5 и провести пару простых до безобразия экспериментов.
Что за эксперименты-то, интриган? Мне уже обратно всё это интересно стало. И никакой идиосинкразии.))
0
Заблокирован
07.10.2025, 22:01
Например:
Файл со строкой на русском языке в кодировке oem866(главное что бы отличная от текущей локали ОС и utf8).
Читаем через:
TextStream
1. readAll
и
2. readLine

Контрольной строкой будет QString созданный из QByteArray считанный через QFile::readAll().
Который является унаследованным от QIODevice:
C++
1
QByteArray QIODevice::readAll()
Результаты в HEX значениях всех символов (по их размеру конечно же).
В текстовом виде тоже интересно, но вторично.

Добавлено через 2 минуты
Цитата Сообщение от sdf45 Посмотреть сообщение
Потом как нить еще поэксперементячу на Qt 5 может быть
Цитата Сообщение от sdf45 Посмотреть сообщение
NO.
Грибы("назвался грибом..." =) ), делать эксперимент!

Добавлено через 2 минуты
sdf45, у тебя же readAll от QFile вообще, зачем ты смотришь на функции QTextStream.
Так что нечего тут проверять.
Путаешь людей.
0
 Аватар для Ender Che
517 / 407 / 77
Регистрация: 29.05.2018
Сообщений: 1,318
07.10.2025, 22:02  [ТС]
SmallEvil, не совсем въехал, что ты хочешь, но завтра попробую. У меня как раз есть вин 7 с Qt 5, боевая.
0
Заблокирован
08.10.2025, 00:39
Цитата Сообщение от Ender Che Посмотреть сообщение
не совсем въехал, что ты хочешь
Да, это меня уже понесло. Ничего с этого не будет.
Пусть sdf45, напишет конкретно в каком случае у него корректно считывается на Qt5.15-.
И какой у TextStream codec.

И какая локаль : QLocale::system().name()
Может у него 7-ка патченная настроенная на utf8, со сборки какой.
Ender Che, ты тоже можешь.
И посмотрим в чём отличие. Если оно есть и sdf45, ничего нигде не напутал.

C++
1
2
3
4
    qDebug() << QLocale::system().name();
    qDebug() << QTextCodec::codecForLocale()->name() << " : " << QTextCodec::codecForLocale()->mibEnum();
    // for qt5
    qDebug() << textstream.codec()->name() << " : " << textstream.codec()->mibEnum();
В Qt6 не найти соответствие системной локали и Конвертера/Кодека, а именно его имя.
0
1131 / 727 / 194
Регистрация: 30.03.2021
Сообщений: 2,378
08.10.2025, 00:49
Цитата Сообщение от SmallEvil Посмотреть сообщение
1. sdf45, у тебя же readAll от QFile вообще, зачем ты смотришь на функции QTextStream
2. какой у TextStream codec
3. И какая локаль : QLocale::system().name()
1. не не, это на Qt6 было QFile, а на Qt5 уже через QTextStream переделал
2. s.codec().name() = "system", язык системы на винде ru
3. QLocale::system().name() = "ru_RU"

Цитата Сообщение от SmallEvil Посмотреть сообщение
в каком случае у него корректно считывается
Да собственно, все по дефолту, принудительно ничего не устанавливал.
Файл utf-8

Добавлено через 5 минут
остальное не успел увидеть на форуме, перезагружал на win7 и назад на 10, снова перегружаться бррр завтро, если что
0
Заблокирован
08.10.2025, 03:38
Цитата Сообщение от sdf45 Посмотреть сообщение
а на Qt5 уже через QTextStream переделал
Цитата Сообщение от sdf45 Посмотреть сообщение
Да собственно, все по дефолту
Код бы ещё увидеть от определения QFile и до закрытия файла, плюс сам текстовый файл.
0
Заблокирован
08.10.2025, 13:19
sdf45, Код твой и файл всё равно нужны.
Но вот для QT 5 наваял дебуг подбор кодека.
Конечно на маленьком тексте, например для UTF-8 будет очень много совпадений.
Но тем не менее.
И если у тебя кодек QTextStream по умолчанию будет UTF-8:
- то лезь в Винду и смотри Бета опцию UTF-8 в настройках языка и регионов.
- проверь нормально BOM текстового файла именно того что открывает тестируемое приложение, отмерь 7 раз
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void MainWindow::findCodecName(QTextCodec *codec)
{
    if(!codec)
        return;
    QString unicode_text = tr("Но у меня же ЛАПКИ!");
    QByteArray encoded = codec->fromUnicode(unicode_text);
 
    auto codec_names = QTextCodec::availableCodecs();
    Q_FOREACH(const auto& name, codec_names){
        // qDebug() << name;
        auto codec = QTextCodec::codecForName(name);
        if(encoded == codec->fromUnicode(unicode_text))
            qDebug() << name;
    }
    qDebug();
}
usage:
C++
1
2
3
4
5
6
7
8
    qDebug() << "Locale codec/s is : ";
    findCodecName(QTextCodec::codecForLocale());
 
    qDebug() << "QTextStream default codec/s : ";
    findCodecName(QTextStream("").codec());
 
    qDebug() << "Codec by BOM (FF FE) : ";
    findCodecName(QTextCodec::codecForUtfText("\xFF\xFE"));
Мой вывод на Qt 5.12.12 + Win10 Ru
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
Locale codec/s is : 
"System"
"windows-1251"
"CP1251"
 
QTextStream default codec/s : 
"System"
"windows-1251"
"CP1251"
 
Codec by BOM (FF xFE) : 
"UTF-16LE"
"UTF-16"
"На этом мои полномочия ВСЁ."
1
1131 / 727 / 194
Регистрация: 30.03.2021
Сообщений: 2,378
08.10.2025, 13:23
SmallEvil, ок, я попробую - спасибо за подсказки
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.10.2025, 13:23
Помогаю со студенческими работами здесь

Сохранения порядка колонок в QSqlTableModel
Есть код. m_dbase = QSqlDatabase::addDatabase(&quot;QSQLITE&quot;); ...

Использование QSqlTableModel внутри делегата
Есть две таблицы для каждой из которых создан QSqlTableModel. Одна из таблиц отображается через...

QSqlTableModel
Делаю наследника от QSqlTableModel. Встал вопрос, как удалить строку из таблицы, не используя...

QSqlTableModel
Исходные данные: msvs 2010, qt 5.0.2 и 5.2.1, ms sql server 2008 В Бд есть табличка с полями...

QSqlTableModel фильтр строк таблицы
Доброй ночи! Собственно вопрос,имеется подключение к БД и ее представление, в частности...


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

Или воспользуйтесь поиском по форуму:
50
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru