Russian Qt Forum

Qt => Вопросы новичков => Тема начата: koldun90 от Август 26, 2016, 11:01



Название: проблема с кодировкой
Отправлено: koldun90 от Август 26, 2016, 11:01
Здравствуйте имею проблему с кодировкой символов в ос AstraLinux основанной на debian
привожу код небольшой
Код
C++ (Qt)
QFile file("/usr/local/szi/etc/all_task_name");
if (file.open(QIODevice::ReadOnly))
{
   while (!file.atEnd())
  {
        char df[200];
        char buf[200];
        file.readline(buf,sizeof(buf));
        QString dan= QString::fromLocal8bit(buf);
       dan=dan.remove("\n");
       sprintf(df,"%s",dan.toUtf8().data());
  }
 
}
 
Смысл в том что происходит чтение из файла
я читаю из файла закодированного ut8 строку с русскими буквами
и затем мне нужно записать эту строку в массив
но в массив пишется не русский текст а мусор
может кто подскажет какие либо варианты....


Название: Re: проблема с кодировкой
Отправлено: kambala от Август 26, 2016, 11:05
а почему ты декодируешь прочитанную строку через fromLocal8bit, если у тебя там UTF-8?


Название: Re: проблема с кодировкой
Отправлено: koldun90 от Август 26, 2016, 11:25
я пробовал разные варианты

в том числе и utf8

результат один и тот же
в переменную QString dan записываются русские символы нормально
а вот в массив df уже нет


Название: Re: проблема с кодировкой
Отправлено: kambala от Август 26, 2016, 11:34
а как ты проверял, что там неправильно записано? сделал вывод в консоль / посмотрел в дебаггере или именно байты проверил?


Название: Re: проблема с кодировкой
Отправлено: koldun90 от Август 26, 2016, 12:23
в дебагере.....


Название: Re: проблема с кодировкой
Отправлено: qate от Август 26, 2016, 12:54
for (auto l: QString::fromUtf8(file.readAll()).split("\n"))  qDebug() << l;




Название: Re: проблема с кодировкой
Отправлено: kambala от Август 26, 2016, 14:45
в дебагере.....
русские буквы в UTF-8 кодируются двумя байтами, а у тебя однобайтный массив — неудивительно, что в дебаггере видна белиберда. сравни байты из полученного массива с байтами из файла.