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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTextCodec::setCodecForLocale проблемы с кодировкой  (Прочитано 5390 раз)
Acrobat
Гость
« : Январь 02, 2016, 14:36 »

Доброго времени суток. При открытии файлов QFileDialogом с названием в русской кодировки возникает исключение.

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

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

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

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


 
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Январь 02, 2016, 15:19 »

Qt ведь не выкидывает исключения
Записан

Acrobat
Гость
« Ответ #2 : Январь 02, 2016, 15:23 »

Фраймворк QT может и не выкидывает, а вот функции API которые он использует ещё как выкидывают. Но суть то не в этом. Не получается открыть файлы QFileDialogом имена которых в кириллической кодировке. Как быть?

Ниже скриншот с окном вызванным из обработчика исключения.
« Последнее редактирование: Январь 02, 2016, 15:26 от Acrobat » Записан
Bepec
Гость
« Ответ #3 : Январь 02, 2016, 19:55 »

Вот на этом окошке что stream не должен быть нулём.
Найдите у себя в коде все stream и построчно пройдите в дебаггере. Видимо вы не проверяете успешность операций.
Записан
Acrobat
Гость
« Ответ #4 : Январь 02, 2016, 19:57 »

Спасибо за ответ.
Вот мой код:
QString FileName = QFileDialog::getOpenFileName(0,"OpenFile",
                     "","Wav Files (*.wav);");
// здесь исключение
  if (FileName == "") return;

Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #5 : Январь 04, 2016, 14:04 »

кодировка где-то задается в программе? в main() например
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Acrobat
Гость
« Ответ #6 : Январь 04, 2016, 16:06 »

реализация точки входа стандартная я её не менял:

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

    return a.exec();
}

Возможно выход в использовании API ? Вообще QT я использую  около месяца, очень нравится, но столько уже приколов наблюдал. Особенно глюки с .pro файлом
Записан
Bepec
Гость
« Ответ #7 : Январь 04, 2016, 17:46 »

Приводите ВЕСЬ код, выкладывайте ВЕСЬ проект и тогда мб кто нибудь и поможет. А то что сейчас - называется гадание на кофейной гуще.

PS в диалоге открытия вылетов не находилось, следовательно проблема в вашем коде.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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