Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Soulq от Май 19, 2011, 17:59



Название: Кириллица в файле
Отправлено: Soulq от Май 19, 2011, 17:59
Здравствуйте еще раз. Меня беспокоит еще одна проблема. Как читать файлы с русскими словами? Записывать слова надо как-обычно: в контейнера или массивы, а не во всякие textedit'оры :).
Читал что надо преобразовывать строку в
Код
C++ (Qt)
toUtf8();
не получилось
пробовал стандартное лечение
Код
C++ (Qt)
setlocale(LC_ALL, "Russian");
Еще читал что надо как-то через .data преобразовывать. (предпочел бы как самый запасной выход)


Название: Re: Кириллица в файле
Отправлено: blood_shadow от Май 19, 2011, 18:21
Читаешь с файла - QByteArray array = device.QIODevice::readAll()
потом устанавливаешь кодек в котором у тебя файл
setCodecForCString(QTextCodec::codecForLocale()); и
QString(array) -тут уже твоя строка в юникоде


Название: Re: Кириллица в файле
Отправлено: lit-uriy от Май 19, 2011, 18:30
кодек для Си строк лучше один раз в программе менять и в функции main.

Т.к. чтение текстовых файлов удобнее делать через QTextStream, то для него нужный кодек сразу и устанавливать (до чтения).
см. QTextStream::setCodec(...)


Название: Re: Кириллица в файле
Отправлено: Soulq от Май 19, 2011, 20:57
кодек для Си строк лучше один раз в программе менять и в функции main.

Т.к. чтение текстовых файлов удобнее делать через QTextStream, то для него нужный кодек сразу и устанавливать (до чтения).
см. QTextStream::setCodec(...)
Спасибо, разобрался, поставил :)