Russian Qt Forum

Qt => XML => Тема начата: fynjy от Май 05, 2009, 15:06



Название: QXmlSimpleReader и кирилица
Отправлено: fynjy от Май 05, 2009, 15:06
Собственно имеется код в виде трёх файлов (все файлы имеют кодировку UTF-8):
Код:
//test.cpp
#include <QtCore>
#include <QtXml>

class CContentHandler: public QXmlDefaultHandler
{
public:
  CContentHandler(QTextStream &aOut):iOut(aOut){};
protected:
  bool characters(const QString &ch);
protected:
  QTextStream &iOut;
};

bool CContentHandler::characters(const QString &ch)
{
  iOut << "ch: [" << ch << "]\n";
  return true;
}

int main(int /*argc*/, char** /*argv*/)
{
  QXmlSimpleReader reader;
  QString str;
  QFile input("test.xml");
  QFile output("out.txt");
  QXmlInputSource source(&input);

  if (output.open(QFile::WriteOnly bitor QFile::Truncate))
    {
      QTextStream out(&output);
      CContentHandler handler(out);

      out << "Привет мир!!!\n";
      reader.setContentHandler(&handler);
      reader.parse(source);
    }
  return 0;
}

// test.pro
QT += xml
TEMPLATE = app
SOURCES = test.cpp

// test.xml
<?xml version="1.0" encoding="UTF-8" ?>
<zzz>Привет мир!!!</zzz>
После прогона появляется файл out.txt следующего содержания:
Код:
Привет мир!!!
ch: [?????? ???!!!]
Вопрос: откуда взялись знаки вопроса (символы с кодом 0x3F)? И как увидеть кирилицу в UTF-8 в out.txt?
Заранее, спасибо.

установлено openSuSE 11.1 x86_64 и qt 4.5.1. Исходники теста прилагаются.


Название: Re: QXmlSimpleReader и кирилица
Отправлено: spirit от Май 05, 2009, 15:17
установи кодек явно используя QTextStream::setCodec.


Название: Re: QXmlSimpleReader и кирилица
Отправлено: fynjy от Май 05, 2009, 15:37
Добавил:
out.setCodec("UTF-8");
Перед:
out << "Привет мир!!!\n";
Первая строка файла стала
ÐÑÐ¸Ð²ÐµÑ Ð¼Ð¸Ñ!!!
зато вторая нормуль:
ch: [Привет мир!!!]
хмм... Видимо таки кодировки где-то настроить надо... В общем спасибо...
PS. где можно дефолтные кодировки посмотреть?


Название: Re: QXmlSimpleReader и кирилица
Отправлено: spirit от Май 05, 2009, 15:39
Qt utf-16 юзает поумолчанию.


Название: Re: QXmlSimpleReader и кирилица
Отправлено: fynjy от Май 05, 2009, 15:41
ок спасибо, вопрос снят.