Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QDomDocument + QXmlQuery - проблемы кодировки или может чего еще
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Обработка XML
woldemarr
Доброго времени суток.

Для начала опишу то, как и на чем работаю:
Windows 7 Ultimate
Visual Studio 2008 Developer Edition
Qt 4.6.3 для мы2008
Все xml описаны так <?xml version="1.0" encoding="windows-1251"?> и сделаны в notepad и сохранены в кодировке ANSI (по-умолчанию).
В файле проекта main.cpp описал внутреннюю кодировку:
QTextCodec *codec = QTextCodec::codecForName("CP1251");
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForCStrings(codec);

Проблема начинается тогда, когда я хочу использовать XQuery или XPath для получения из xml нужного мне узла. Как я понял QDomDocument этого делать не позволяет, для этого нужно использовать QXmlQuery. При его использовании я делаю так:

QString XQuery = "/root/nodelevel1/node11[@name = 'something']";
QXmlQuery query;
query.setFocus(stringXml); //xml в виде QString
query.setQuery(XQuery);
QString sResult;
bool bRes = query.evaluateTo(&sResult);

В итоге я строке sResult я получаю нужный мне результат, но русский текст там напрочь убит кракозяблами.

Сталкнулся вот с такой проблемой, подскажите как ее решить, уже голову всю сломал.
woldemarr
Все разобрался.

Установил в xml encoding в UTF-8, сохранил его как UTF-8, в программе evaluateTo делаю с QXmlFormatter и буффер приобразую через fromUtf8().
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.