Russian Qt Forum

Qt => Интернационализация, локализация => Тема начата: QCasper от Февраль 15, 2007, 23:36



Название: Кодеки
Отправлено: QCasper от Февраль 15, 2007, 23:36
Избитая в хлам тема, но я уже затрахался и, сгорая от стыда, задаю это вопрос. У меня в QLineEdit написано "привет". Как сохранить этот "привет" в текстовый файл? В смысле чтобы "привет" получился а не лажа.

Qt4, WindowsXP.


Название: Кодеки
Отправлено: nova от Февраль 16, 2007, 00:02
Код:

QTextCodec *codec = QTextCodec::codecForName("IBM866");
QByteArray encodedString =codec->fromUnicode(lineEdit->text());
file.write(encodedString,encodedString.size());

если надо писать в utf8 замени IBM866 на Windows-1251.
если в KOI8-R то IBM866 на KOI8-R.
или открой твой записанный вфайл в редакторе который понимает UTF-8 :)


Название: Кодеки
Отправлено: QCasper от Февраль 16, 2007, 00:09
Цитата: "nova"
Код:

QTextCodec *codec = QTextCodec::codecForName("IBM866");
QByteArray encodedString =codec->fromUnicode(lineEdit->text());
file.write(encodedString,encodedString.size());

если надо писать в utf8 замени IBM866 на Windows-1251.
если в KOI8-R то IBM866 на KOI8-R.
или открой твой записанный вфайл в редакторе который понимает UTF-8 :)


Так, это вроде заработало. А вот когда исопльзую вместо file.write(),
Код:
QTextStream out(&file);
out << encodedString;


то получается I?eaao Как быть?


Название: Кодеки
Отправлено: nova от Февраль 16, 2007, 00:18
Код:

 QTextStream out(&file);
 out.setCodec("IBM866");
 out << lineEdit->text();

:)
Доку читать не пробовал ? ;)


Название: Кодеки
Отправлено: QCasper от Февраль 16, 2007, 00:22
Цитата: "nova"
Код:

 QTextStream out(&file);
 out.setCodec("UTF-8");
 out << lineEdit->text();

:)
Доку читать не пробовал ? ;)


Вообще пробовал, но видно не дошло. Так с этим тоже понятно, но это все тренировка. На самом деле мне все это надо было для QDomElement::setAttribute, где вторым параметром передается строка, которая берется из лайнедита. Строка кирилическая есесно. А там как кодировать?


Название: Кодеки
Отправлено: nova от Февраль 16, 2007, 00:29
Ну по идее
Код:

     QTextStream out(device);
     out.setCodec("IBM866");
     domDocument.save(out, IndentSize);

Щас в доке подсмотрел :)
попробуй :)


Название: Кодеки
Отправлено: QCasper от Февраль 16, 2007, 00:33
Цитата: "nova"
Ну по идее
Код:

     QTextStream out(device);
     out.setCodec("IBM866");
     domDocument.save(out, IndentSize);

Щас в доке подсмотрел :)
попробуй :)


Нет, мне это не надо сохранять, а допустим по сети отправить, сразу в виндовой кодировке.


Название: Кодеки
Отправлено: nova от Февраль 16, 2007, 00:44
А как у тебя не получается ?
з.ы. Я с домом не работал а вдоке читать лень :)