Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Acrobat от Январь 02, 2016, 14:36



Название: QTextCodec::setCodecForLocale проблемы с кодировкой
Отправлено: Acrobat от Январь 02, 2016, 14:36
Доброго времени суток. При открытии файлов QFileDialogом с названием в русской кодировки возникает исключение.

QString FileName = QFileDialog::getOpenFileName(0,"OpenFile",
                     "","Wav Files (*.wav);");

Следующий код не помогает:

QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));

Хотя в QDebug() выводит без кракозябров.


 


Название: Re: QTextCodec::setCodecForLocale проблемы с кодировкой
Отправлено: gil9red от Январь 02, 2016, 15:19
Qt ведь не выкидывает исключения


Название: Re: QTextCodec::setCodecForLocale проблемы с кодировкой
Отправлено: Acrobat от Январь 02, 2016, 15:23
Фраймворк QT может и не выкидывает, а вот функции API которые он использует ещё как выкидывают. Но суть то не в этом. Не получается открыть файлы QFileDialogом имена которых в кириллической кодировке. Как быть?

Ниже скриншот с окном вызванным из обработчика исключения.


Название: Re: QTextCodec::setCodecForLocale проблемы с кодировкой
Отправлено: Bepec от Январь 02, 2016, 19:55
Вот на этом окошке что stream не должен быть нулём.
Найдите у себя в коде все stream и построчно пройдите в дебаггере. Видимо вы не проверяете успешность операций.


Название: Re: QTextCodec::setCodecForLocale проблемы с кодировкой
Отправлено: Acrobat от Январь 02, 2016, 19:57
Спасибо за ответ.
Вот мой код:
QString FileName = QFileDialog::getOpenFileName(0,"OpenFile",
                     "","Wav Files (*.wav);");
// здесь исключение
  if (FileName == "") return;



Название: Re: QTextCodec::setCodecForLocale проблемы с кодировкой
Отправлено: kambala от Январь 04, 2016, 14:04
кодировка где-то задается в программе? в main() например


Название: Re: QTextCodec::setCodecForLocale проблемы с кодировкой
Отправлено: Acrobat от Январь 04, 2016, 16:06
реализация точки входа стандартная я её не менял:

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

Возможно выход в использовании API ? Вообще QT я использую  около месяца, очень нравится, но столько уже приколов наблюдал. Особенно глюки с .pro файлом


Название: Re: QTextCodec::setCodecForLocale проблемы с кодировкой
Отправлено: Bepec от Январь 04, 2016, 17:46
Приводите ВЕСЬ код, выкладывайте ВЕСЬ проект и тогда мб кто нибудь и поможет. А то что сейчас - называется гадание на кофейной гуще.

PS в диалоге открытия вылетов не находилось, следовательно проблема в вашем коде.