Russian Qt Forum
Ноябрь 23, 2024, 06:15 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [QT4.3.0][VMS2005][Windows] русская кодировка, проблемы  (Прочитано 11121 раз)
NiiLit
Гость
« : Сентябрь 27, 2007, 15:43 »

пару дней на QT. не ругать!!!

вопрос: откомпилированное приложение ".exe" в винде. все в иероглифах. как исправить?
*где поставить, изменить или ...


зы: типа того:  ??: НепонимающийНепонимающий?
Записан
Dodge
Гость
« Ответ #1 : Сентябрь 27, 2007, 16:08 »

Смотри в асистенте QTextCodec
Записан
QCasper
Гость
« Ответ #2 : Сентябрь 27, 2007, 16:15 »

замени все свои тексты "your text" на QString::fromLocal8Bit("your text"). Это так называемое решение "чтоб работало", но это не по джедайски. А по джедайски надо все тексты писать на аглицком, заключая их в tr("your text"), и пользоваться приемами интернационализации1.

1. C++ GUI Programming with Qt 4 By Jasmin Blanchette, Mark Summerfield. Chapter 17.
Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #3 : Сентябрь 27, 2007, 17:20 »

Вставить в main() (можно самой первой) строку:
Код:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("CP1251"));
Записан
Вячеслав
Гость
« Ответ #4 : Сентябрь 27, 2007, 17:22 »

Вставить в main() (можно самой первой) строку:
Код:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("CP1251"));
И долго вспоминать по матери автора софтины,если на компе нет кодовой страницы 1251.....
Записан
NiiLit
Гость
« Ответ #5 : Сентябрь 27, 2007, 17:22 »

всем сенгс

QString::fromLocal8Bit("your text")
работает


в tr() все занесено...

читаю  главу 17
« Последнее редактирование: Сентябрь 27, 2007, 17:25 от NiiLit » Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #6 : Сентябрь 27, 2007, 17:25 »

Вставить в main() (можно самой первой) строку:
Код:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("CP1251"));
И долго вспоминать по матери автора софтины,если на компе нет кодовой страницы 1251.....
На Винде нет кодовой страницы 1251? Тогда это мертвая винда  Улыбающийся
А если серьезно, когда речь идет о разработке действительно кросплатформенного и мультиязычного приложения, то без tr() нечего делать. А если (см. топик) речь идет конкретно о Винде - вполне достаточно установить кодек для Сишных строк.
« Последнее редактирование: Сентябрь 27, 2007, 17:33 от Hellraiser » Записан
NiiLit
Гость
« Ответ #7 : Сентябрь 27, 2007, 17:46 »

Вставить в main() (можно самой первой) строку:
Код:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("CP1251"));
И долго вспоминать по матери автора софтины,если на компе нет кодовой страницы 1251.....
На Винде нет кодовой страницы 1251? Тогда это мертвая винда  Улыбающийся
А если серьезно, когда речь идет о разработке действительно кросплатформенного и мультиязычного приложения, то без tr() нечего делать. А если (см. топик) речь идет конкретно о Винде - вполне достаточно установить кодек для Сишных строк.

со строкой в не заработало!)_
Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #8 : Сентябрь 27, 2007, 17:50 »

Не заработало ? Непонимающий
Записан
NiiLit
Гость
« Ответ #9 : Сентябрь 27, 2007, 17:52 »

Не заработало ? Непонимающий
неа  Обеспокоенный ...

все равно СЕНГС
Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #10 : Сентябрь 27, 2007, 17:55 »

Покажи кусочек кода, строки которого криво отображаются.
Записан
nanit
Гость
« Ответ #11 : Сентябрь 28, 2007, 09:03 »

В своём коде я делаю так:

int main(int argc, char *argv[])
{
   QApplication app(argc, argv);

#ifdef Q_OS_WIN32
   QTextCodec *codec = QTextCodec::codecForName("Windows-1251");
   QTextCodec::setCodecForTr( codec );
   QTextCodec::setCodecForCStrings( codec );
   QTextCodec::setCodecForLocale( codec );
#endif

   MainWindow wnd;
   wnd.show();
   app.connect(&app, SIGNAL(lastWindowClosed()), &app, SLOT(quit()));
   return app.exec();
}

Возможно решение не очень, но оно работает.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #12 : Сентябрь 28, 2007, 18:17 »

А так?
QTextCodec *codec = QTextCodec::codecForName("CP1251");
И хорошо бы проверить codec на 0 после данного действия.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
nanit
Гость
« Ответ #13 : Сентябрь 28, 2007, 21:13 »

Я делал по http://doc.trolltech.com/4.3/qtextcodec.html#details, а CP1251 не пробовал.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.055 секунд. Запросов: 23.