На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела *nix / gcc / Eclipse / Qt / wxWidgets / GTK+
  • При создании темы ОБЯЗАТЕЛЬНО указывайте версию тулкита / библиотеки / компилятора.
  • Перед тем как задать вопрос, сформулируйте его правильно, чтобы вас могли понять.
  • Нарушение Правил может повлечь наказание со стороны модераторов.


Полезные ссылки:
user posted image Boost по-русски
user posted image Qt по-русски
Модераторы: archimed7592
  
> Неправильно считываются русские символы из файла в программе на Qt Creator
    Я создал программу на Visual C++ 2012 под Windows. Потом я перенёс её на другой компьютер, где стоит Astra Linux, пересобрал в QT Creator (версия Qt 5.15.2) и запустил её.
    В этой программе происходит считывание строк, содержащих русские символы и вывод данных из этих строк в комбобокс с чекбоксами. Кодировка текстового файла--UTF-8. Вот код:

    ExpandedWrap disabled
      f = fopen("MyNIPs.txt","rt");
      if (f!=NULL)
      {
            fgets(s,256,f);
            fgets(s,256,f);
            while (!feof(f))
            {
                  fgets(s,256,f);
                  myString = QString::fromUtf8(s);
                  stdstr = myString.toStdString();
                  strcpy(s,stdstr.c_str());
                  sscanf(s,"%s %s %s %s",sname,sX,sY,sZ);
                  X = atof(sX);
                  Y = atof(sY);
                  Z = atof(sZ);
                  strcpy(myNIPstruct.name,sname);
                  myNIPstruct.X = X;
                  myNIPstruct.Y = Y;
                  myNIPstruct.Z = Z;
                  NIParray.push_back(myNIPstruct);
            }
      }
      fclose(f);
      n = NIParray.size();
      if (n>0)
      {
           QStandardItemModel* model = QStandardItemModel(n,1,ui->comboBox_20);
           for (i=0; i<n; i++)
           {
                myNIPstruct = (NIPstruct)NIParray.at(i);
                strcpy(sname,myNIPstruct.name);
                sprintf(sname2," %s",sname);
                mySprintf = QString(sname2);
                QStandardItem* item = new QStandardItem;
                item->setText(myString);
                item->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
                item->setData(Qt::Unchecked, Qt::CheckStateRole);
                model->insertRow(i,item);
           }
           ui->comboBox_20->show();
           ui->comboBox_20->setModel(model);
           ui->comboBox_20->repaint();
      }
      else
      {
           QMessageBox::information(0,"Ошибка","В файле NIPs.txt отсутствуют данные.");
      }


    Под Windows всё нормально работает--строки считываются с правильным отображением кириллических символов и в комбобокс с чекбоксами русские символы выводятся правильно.
    А под Astra Linux проблема--в считываемых строках вместо кириллических символов находится какая-то абракадабра и эта абракадабра выводится в комбобокс с чекбоксами.

    В чём причина этой проблемы? Как исправить эту ошибку?
      Отладку пробовал? :blink: Глянь эту заготовочку. Обработку ошибок допилишь сам.
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0283 ]   [ 16 queries used ]   [ Generated: 27.04.24, 11:41 GMT ]