Название: Преобразование символов как Qt Designer Отправлено: vertus от Сентябрь 26, 2011, 11:48 Всем доброго времени суток.
Программирую в VS 2010 под Windows и Unix используя qt. Проблема в следующем: кирилический текст набранный в одной ОС отображается иероглифами в другой. Выставлять разные кодеки для разных ОС пробывал, не помогает. Но, весь текст написанных в формах Qt Desginer отображается нормально. Посмотрел сгенерированный ui_ файл, там такой код: Код: setText(QApplication::translate("Dialog", "\320\241\320\276\321\205\321\200\320\260\320\275\320\270\321\202\321\214", 0, QApplication::UnicodeUTF8)); Теперь вопрос: как в Qt прямо в коде программы генерировать такие строки? Спасибо за внимание. Название: Re: Преобразование символов как Qt Designer Отправлено: Rem Norton от Сентябрь 26, 2011, 13:15 При помощи QString, QChar и цикла несложно преобразовать строку в такое представление. НО будет ли это решение верным? Можно поподробнее узнать о проблеме и, если не затруднит, код в студию!
Название: Re: Преобразование символов как Qt Designer Отправлено: vertus от Сентябрь 26, 2011, 13:22 Довольно проблематично предоставить код, т.к. использование строк разбросано по большому множеству классов.
Могу в кратце предоставить алгоритм моих действий. В самом начале устанавливаю кодеки используя вот эту простую функцию: Код: void setEncoding() Затем записываю данные в строки например так: Код: QString text = tr("Здесь текст кириллицей"); Все эти действия я делаю в Windows в IDE Visual Studiio. Затем компилирую код в Unix, и переменная text отображает белеберду на экране. Но, кириллический текст написанный на формах в Designer отображается нормально. Название: Re: Преобразование символов как Qt Designer Отправлено: andrew.k от Сентябрь 26, 2011, 13:31 У тебя исходники в какой кодировке?
Может так? Код
Название: Re: Преобразование символов как Qt Designer Отправлено: Rem Norton от Сентябрь 26, 2011, 13:37 Или так:
Код
Название: Re: Преобразование символов как Qt Designer Отправлено: andrew.k от Сентябрь 26, 2011, 13:41 Или так: Так неизвестно какой кодек будет использован (вообще говоря известно, просто в общем). А при помощи QTextCodec явно.Код
Название: Re: Преобразование символов как Qt Designer Отправлено: vertus от Сентябрь 26, 2011, 13:45 Оба варианта показывают белеберду, при чем разную. А кто нибудь знает как поменять кодировку исходников в Visual Studio, может в этом дело?
Название: Re: Преобразование символов как Qt Designer Отправлено: kambala от Сентябрь 26, 2011, 13:59 через notepad++ например сохрани в нужной кодировке (скажем, utf-8)
Название: Re: Преобразование символов как Qt Designer Отправлено: Rem Norton от Сентябрь 26, 2011, 14:02 Оба варианта показывают белеберду, при чем разную. А кто нибудь знает как поменять кодировку исходников в Visual Studio, может в этом дело? Дело однозначно в этом. А насколько принципиально использовать Visual Studio? Может попробовать Qt Creator? Там таких приколов нет. Название: Re: Преобразование символов как Qt Designer Отправлено: vertus от Сентябрь 26, 2011, 14:05 через notepad++ например сохрани в нужной кодировке (скажем, utf-8) Не вариант, куча исходников. Оба варианта показывают белеберду, при чем разную. А кто нибудь знает как поменять кодировку исходников в Visual Studio, может в этом дело? Дело однозначно в этом. А насколько принципиально использовать Visual Studio? Может попробовать Qt Creator? Там таких приколов нет. Да, принципиально, корпоративная технология разработки ПО. Название: Re: Преобразование символов как Qt Designer Отправлено: andrew.k от Сентябрь 26, 2011, 14:09 Я тут подумал. Там #ifdef то не нужен.
Исходники то не меняются. Код Возможно я где-то ошибся в коде, нужно просто правильно сконвертировать строчки из 1251 в юникод, который используется в qt. Это если иходники в 1251 кодировке. Название: Re: Преобразование символов как Qt Designer Отправлено: andrew.k от Сентябрь 26, 2011, 14:15 Ты пишешь setCodecForCStrings ( KOI8-R ), а строки то у тебя в 1251.
Конечно кракозябры будут. Должно быть безусловно setCodecForCStrings (1251) в твоем случае. Название: Re: Преобразование символов как Qt Designer Отправлено: vertus от Сентябрь 26, 2011, 14:18 Ты пишешь setCodecForCStrings ( KOI8-R ), а строки то у тебя в 1251. Конечно кракозябры будут. Должно быть безусловно setCodecForCStrings (1251) в твоем случае. Ты прав, но там возникала другая проблема, системные сообщения выводились белебердой. Но я подправил функцию, сделал для QString KOI8-R, а для tr WINDOWS-1251: Код: void setEncoding() Всем спасибо, проблема решена. |