crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в QListWidget
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 14.6.2011, 16:29
 
Цитата(RazrFalcon @ 14.6.2011, 19:27) *
Так это же freeBSD а не линукс
и линуксы всякие бывают
RazrFalcon Дата 14.6.2011, 16:27
  Так это же freeBSD а не линукс <_<
Litkevich Yuriy Дата 14.6.2011, 16:17
 
Цитата(RazrFalcon @ 14.6.2011, 16:07) *
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
А если у тебя База данных в CP-1251 (windows), как будешь разруливать?

Цитата(Borodeys @ 14.6.2011, 16:27) *
Возможно ли Qt научить самого определять кодировку?
НЕТ

Цитата(Borodeys @ 14.6.2011, 16:27) *
А как узнать необходимую кодировку, чтобы указать ее в конструкции
Ты должен знать её сам, любой современный текстовый редактор, а тем более программистский, позволяет задать кодировку. Какая-то из кодировок в нём установлена по умолчанию для новых файлов.
Цитата(Borodeys @ 14.6.2011, 16:27) *
Как узнать кодировку используемой системы windows/linux.
кодировка системы тебе не нужна. (на русском виндовозе в графическом интерфейсе - CP-1251/Windows-1251, а в консоли - OEM866/IBM866)

Цитата(RazrFalcon @ 14.6.2011, 18:10) *
Linux - UTF8
часто, но не всегда. FreeBSD, например, koi-8r
RazrFalcon Дата 14.6.2011, 15:10
 
Цитата(Borodeys @ 14.6.2011, 13:48) *
А как перейти на UTF-8? Тогда отпадет необходимость в использовании кодека, а как быть при портировании программы на другую машину?

Да нет же, там вы задаете кодировку исходников.

В creator'е никак не задать кодирорву проги, это логично.

>>UTF-6 и UTF-16 не подходят, опять ромбики.
кто бы сомневался, их хотя бы кто то использует?


Linux - UTF8
Винда - cp1251 или Windows-1251
Borodeys Дата 14.6.2011, 13:48
  А как перейти на UTF-8? Тогда отпадет необходимость в использовании кодека, а как быть при портировании программы на другую машину?
silver47 Дата 14.6.2011, 13:29
  В файле main.cpp до вызова конструктора виджета:
QTextCodec *codec=QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);


Для WinXP кажется cp1251 - по умолчанию. Опять же здесь нужно устанавливать такую кодировку, которая стоит у ВАС
Цитата(Borodeys @ 14.6.2011, 16:18) *
Настройки QT - Инструменты/параметры/среда/основные.


Если стоит System - то ставьте в программе cp1251. Я Уже давно на UTF-8 перешел.
Borodeys Дата 14.6.2011, 13:27
  А как узнать необходимую кодировку, чтобы указать ее в конструкции
QTextCodec::codecForName("X");

UTF-6 и UTF-16 не подходят, опять ромбики. Может где в винде посмотреть нужно? У меня Windows XP SP3.

Научным методом тыка было установлено, что кодировка - windows-1251. Но все же вопрос остается открыт: Как узнать кодировку используемой системы windows/linux. Возможно ли Qt научить самого определять кодировку?
RazrFalcon Дата 14.6.2011, 13:07
 
Цитата(Borodeys @ 14.6.2011, 13:01) *
Настройки QT - Инструменты/параметры/среда/основные.
Это не то.

Мне всегда хватало:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
В консрукторе QMainWindow.
Borodeys Дата 14.6.2011, 13:01
  Настройки QT - Инструменты/параметры/среда/основные.

Использование trUtf8() - удобно, однако, в результате его использования получаем кучу ромбиков со знаком вопроса. Разбираюсь с кодеком.
Litkevich Yuriy Дата 14.6.2011, 9:53
 
Цитата(Borodeys @ 14.6.2011, 12:19) *
Играл с кодировками и языком в настройках Qt
это где такое место?

Чтобы использовать строковые константы содержащие символы не Latin-1, нужно указать Qt какая кодировка исходника.
Самый простой способ:
1) Кодировка исходника - UTF-8
2) Все строковые константы оборачиваем в функцию trUtf8(), она преобразует строку из UTF-8 во внутреннее представление Qt (QString использует UTF-16).
недостаток:
строки помещённые в trUtf8 будут попадать в перевод, а иногда это не удобно.

Способ по сложнее (писанины больше):
1) Кодировка исходника - "Х"
2)
 QTextCodec *codec = QTextCodec::codecForName(Х); // Создаём кодек для кодировки "Х"

// Далее в коде используем
QString string = codec->toUnicode(" - Начато формирование технологических отчетов");
}
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 1:36