QListWidget, проблема с кодирвкой |
Здравствуйте, гость ( Вход | Регистрация )
QListWidget, проблема с кодирвкой |
Borodeys |
14.6.2011, 8:52
Сообщение
#1
|
Студент Группа: Участник Сообщений: 23 Регистрация: 10.4.2011 Пользователь №: 2588 Спасибо сказали: 0 раз(а) Репутация: 0 |
Всем привет. Проблема вот в чем: после вставки в ListWidget строк с русским текстом, на экране отображается какая-то кракозябра. Тоже само происходит и с элементом Label.
Как быть? Играл с кодировками и языком в настройках Qt - не помогло. |
|
|
silver47 |
14.6.2011, 9:15
Сообщение
#2
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
|
|
|
Litkevich Yuriy |
14.6.2011, 9:53
Сообщение
#3
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Играл с кодировками и языком в настройках Qt это где такое место?Чтобы использовать строковые константы содержащие символы не Latin-1, нужно указать Qt какая кодировка исходника. Самый простой способ: 1) Кодировка исходника - UTF-8 2) Все строковые константы оборачиваем в функцию trUtf8(), она преобразует строку из UTF-8 во внутреннее представление Qt (QString использует UTF-16). недостаток: строки помещённые в trUtf8 будут попадать в перевод, а иногда это не удобно. Способ по сложнее (писанины больше): 1) Кодировка исходника - "Х" 2)
|
|
|
Borodeys |
14.6.2011, 13:01
Сообщение
#4
|
Студент Группа: Участник Сообщений: 23 Регистрация: 10.4.2011 Пользователь №: 2588 Спасибо сказали: 0 раз(а) Репутация: 0 |
Настройки QT - Инструменты/параметры/среда/основные.
Использование trUtf8() - удобно, однако, в результате его использования получаем кучу ромбиков со знаком вопроса. Разбираюсь с кодеком. |
|
|
RazrFalcon |
14.6.2011, 13:07
Сообщение
#5
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
|
|
|
Borodeys |
14.6.2011, 13:27
Сообщение
#6
|
Студент Группа: Участник Сообщений: 23 Регистрация: 10.4.2011 Пользователь №: 2588 Спасибо сказали: 0 раз(а) Репутация: 0 |
А как узнать необходимую кодировку, чтобы указать ее в конструкции
UTF-6 и UTF-16 не подходят, опять ромбики. Может где в винде посмотреть нужно? У меня Windows XP SP3. Научным методом тыка было установлено, что кодировка - windows-1251. Но все же вопрос остается открыт: Как узнать кодировку используемой системы windows/linux. Возможно ли Qt научить самого определять кодировку? |
|
|
silver47 |
14.6.2011, 13:29
Сообщение
#7
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
В файле main.cpp до вызова конструктора виджета:
Для WinXP кажется cp1251 - по умолчанию. Опять же здесь нужно устанавливать такую кодировку, которая стоит у ВАС Настройки QT - Инструменты/параметры/среда/основные. Если стоит System - то ставьте в программе cp1251. Я Уже давно на UTF-8 перешел. |
|
|
Borodeys |
14.6.2011, 13:48
Сообщение
#8
|
Студент Группа: Участник Сообщений: 23 Регистрация: 10.4.2011 Пользователь №: 2588 Спасибо сказали: 0 раз(а) Репутация: 0 |
А как перейти на UTF-8? Тогда отпадет необходимость в использовании кодека, а как быть при портировании программы на другую машину?
|
|
|
RazrFalcon |
14.6.2011, 15:10
Сообщение
#9
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
А как перейти на UTF-8? Тогда отпадет необходимость в использовании кодека, а как быть при портировании программы на другую машину? Да нет же, там вы задаете кодировку исходников. В creator'е никак не задать кодирорву проги, это логично. >>UTF-6 и UTF-16 не подходят, опять ромбики. кто бы сомневался, их хотя бы кто то использует? Linux - UTF8 Винда - cp1251 или Windows-1251 |
|
|
Litkevich Yuriy |
14.6.2011, 16:17
Сообщение
#10
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); А если у тебя База данных в CP-1251 (windows), как будешь разруливать?Возможно ли Qt научить самого определять кодировку? НЕТА как узнать необходимую кодировку, чтобы указать ее в конструкции Ты должен знать её сам, любой современный текстовый редактор, а тем более программистский, позволяет задать кодировку. Какая-то из кодировок в нём установлена по умолчанию для новых файлов.Как узнать кодировку используемой системы windows/linux. кодировка системы тебе не нужна. (на русском виндовозе в графическом интерфейсе - CP-1251/Windows-1251, а в консоли - OEM866/IBM866)Linux - UTF8 часто, но не всегда. FreeBSD, например, koi-8r
|
|
|
Текстовая версия | Сейчас: 15.1.2025, 1:21 |