Название: Неправильная кодировка Отправлено: radislav72 от Сентября 30, 2011, 18:14 Здравствуйте!
Возникла такая проблема: В одном файле, описывающем класс формы, определен массив (не входящий в класс): Код: QString fields[fieldsCount][2] = { При попытке заполнения элементами массива выпадающего списка они выводятся в непонятной кодировке: Код: ui->cbFields->clear(); Кодировка файла исходника- UTF-8 В файле pro прописано Код: CODECFORTR = UTF-8 В другом месте того же файла присутствует код типа Код: ui->cbOperations->clear(); Здесь все работает как надо. Пробовал также вызывать QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); но толку мало. Как заставить строки из массива отображать в нужном виде? Название: Re: Неправильная кодировка Отправлено: maint от Сентября 30, 2011, 18:24 Код: QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); Название: Re: Неправильная кодировка Отправлено: radislav72 от Сентября 30, 2011, 19:55 Код: QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); Эффекта это тоже не дало. Зато методом перебора выяснил, что если вместо tr() использовать trUtf8(), то все нормально. Но почему надо использовать "принудительное" преобразование в UTF-8, если оно уже как бі включено для tr() вообще? В чем дело? Название: Re: Неправильная кодировка Отправлено: maint от Сентября 30, 2011, 20:29 странно, у меня в линухе этих 2 строчек вполне хватает
Название: Re: Неправильная кодировка Отправлено: andrew.k от Октября 01, 2011, 01:15 Видимо у тебя массив инициализируется раньше вызова setCodecForTr.
Если строки инициализируются статически, то в мэйне setCodec* уже поздно. Я использую примерно такой код. Код
Это заставляет компилятор инициализировать класс (SetCodec) еще до инициализации прочих статических переменных. Тогда и проблем с кодировками быть не должно. Название: Re: Неправильная кодировка Отправлено: radislav72 от Октября 01, 2011, 07:03 Видимо у тебя массив инициализируется раньше вызова setCodecForTr. Точно, как раз в этом и была проблема. Спасибо! Название: Re: Неправильная кодировка Отправлено: Авварон от Октября 01, 2011, 12:08 Видимо у тебя массив инициализируется раньше вызова setCodecForTr. Какой офигенно прямой и переносимый код.Если строки инициализируются статически, то в мэйне setCodec* уже поздно. Я использую примерно такой код. Код
Это заставляет компилятор инициализировать класс (SetCodec) еще до инициализации прочих статических переменных. Тогда и проблем с кодировками быть не должно. Название: Re: Неправильная кодировка Отправлено: andrew.k от Октября 01, 2011, 13:27 Код
А что виндовые компиляторы не понимают атрибутов? Чем еще он такой непрямой? Название: Re: Неправильная кодировка Отправлено: radislav72 от Октября 01, 2011, 15:05 Цитировать Какой офигенно прямой и переносимый код. А как лучше ?Название: Re: Неправильная кодировка Отправлено: Alex Custov от Октября 02, 2011, 14:45 А что виндовые компиляторы не понимают атрибутов? Чем еще он такой непрямой? Это нестандартно, и никто не обязан это поддерживать. Если gcc использует строгие правила проверки, то и он это не скомпилирует. Название: Re: Неправильная кодировка Отправлено: andrew.k от Октября 02, 2011, 15:00 что за строгие правила проверки?
Название: Re: Неправильная кодировка Отправлено: andrew.k от Октября 02, 2011, 15:01 Так какое решение этой проблемы? Не использовать статически инициализированные данные?
Название: Re: Неправильная кодировка Отправлено: asvil от Октября 02, 2011, 15:44 хехе, у кого-то хватает силы еще поддерживать все компиляторы, как это делают тролли?
Название: Re: Неправильная кодировка Отправлено: radislav72 от Октября 05, 2011, 13:53 Может, оптимальный выход тогда при инициализации использовать trUtf8 вместо tr ?
Код: QString fields[fieldsCount][2] = { Название: Re: Неправильная кодировка Отправлено: maint от Октября 05, 2011, 14:20 я использую, и это нравственно
Название: Re: Неправильная кодировка Отправлено: maint от Октября 05, 2011, 14:22 хехе, у кого-то хватает силы еще поддерживать все компиляторы, как это делают тролли? не надо опускатся до аккаунтов с политическим жаргоном. |