Russian Qt Forum

Qt => Интернационализация, локализация => Тема начата: xintrea от Июль 16, 2008, 14:51



Название: Чтение-запись файлов в кодировке UTF-8 при локале KOI-8R.
Отправлено: xintrea от Июль 16, 2008, 14:51
Здравствуйте!


Давайте разберемся с кодировками. Ситуация сейчас такая. Имею систему с локалью KOI-8R. Имею HTML файлы в кодировке UTF-8 (в них нигде charset не прописан, просто файлы с HTML разметкой в кодировке UTF-8).

Открываю файл через команды

Код:
QFile f(fullfilename); // Где fullfilename - полный путь к файлу
edittextarea->setHtml( QString::fromUtf8(f.readAll()) ); // Где edittextarea - объект класса QTextEdit

После редактирования сохраняю текст в файл командами

Код:
QTextStream out(&fullfilename);
QString content=edittextarea->toHtml();
out << content.toUtf8();

И получаю файл с битой кодировкой, в котором вместо русских букв пробелы (0x20), иногда какие-то коды типа 0x9C, 0x9D...

А если не давать команду конвертации при сохранении, например так

Код:
out << content;

То тогда сохраненный файл получается в системной кодировке KOI-8R, а нужно чтоб он был в той же UTF-8.


Вопрос - как в QT4 считывать и записывать файлы в нужной кодировке UTF-8, если кодировка локали отличается от UTF-8?


Название: Re: Чтение-запись файлов в кодировке UTF-8 при локале KOI-8R.
Отправлено: Пантер от Июль 16, 2008, 15:10
QTextStream FileStream(&file);
FileStream.setCodec("UTF8"); (может UTF-8, точно не помню)
Перекодировки не нужно, все само сделается.


Название: Re: Чтение-запись файлов в кодировке UTF-8 при локале KOI-8R.
Отправлено: xintrea от Июль 16, 2008, 21:10
Спасибо, заработало.