qt utf-8
От: J0nny  
Дата: 04.05.11 14:25
Оценка:
возникла странная ситуация Вообщем у меня задача такая.
1. в java приложении я генерирую xml с кодировкой utf-8 b отправляю на stdout
2. в qt приложении я запускаю java -приложение через QProcess и ловлю выхлоп stdout через readAll.
данные оказываются в QbyteArray;
3. я подсовываю этот массив байтиков QXmlDocument через setContent и проверяю название корневого тега.
и тут начинается какой -то бред. Условие не выполняется.
bool MainWindow::parseWorkBook(const QByteArray &wb, QString fileName)
{
    QDomDocument domDocument;

    if (!domDocument.setContent( wb, true, &errorStr, &errorLi .... 

    QDomElement root = domDocument.documentElement();
//    Util::file_set_contents("_1", root.tagName().data() + QString("книга"), "UTF-8");
    if (root.tagName() == "книга")

 {


Помогите пожалуйста разобраться в этой чехарде.
xml : http://files.rsdn.ru/95570/log.xml
результат выполнения file_set_contents : http://files.rsdn.ru/95570/_1.txt
Re: qt utf-8
От: K13 http://akvis.com
Дата: 04.05.11 17:47
Оценка:
Здравствуйте, J0nny, Вы писали:
J>
J>    if (root.tagName() == "книга")


Кодировка исходников — точно utf-8?
Re[2]: qt utf-8
От: K13 http://akvis.com
Дата: 04.05.11 17:49
Оценка:
K13>Здравствуйте, J0nny, Вы писали:
J>>
J>>    if (root.tagName() == "книга")
K13>


K13>Кодировка исходников — точно utf-8?


Кроме того -- нужно сравнивать с QString::fromUtf8( "книга" )
Или загнать эти строки в юникодные ресурсы.

Или выставить нужный кодек для сишных литералов (не советую).
Re[3]: qt utf-8
От: J0nny  
Дата: 04.05.11 18:28
Оценка:
Здравствуйте, K13, Вы писали:

K13>>Кодировка исходников — точно utf-8?


cpp — исходника да, xml тоже в utf-8 формате

K13>Кроме того -- нужно сравнивать с QString::fromUtf8( "книга" )

K13>Или загнать эти строки в юникодные ресурсы.

QString::fromUtf8( "книга" ) — это помогло. Большое спасибо.
Я совсем забыл, что компилятор то не в курсе, в какой кодировке исходник.
Re[3]: qt utf-8
От: Леночка Россия  
Дата: 29.05.11 07:04
Оценка:
Здравствуйте, K13, Вы писали:

K13>>Здравствуйте, J0nny, Вы писали:

J>>>
J>>>    if (root.tagName() == "книга")
K13>>


все верно, юзаем fromUtf8
но

1. в исходниках ставим прагму #pragma execution_character_set("utf-8")
2. патчим студию, чтоб она это поняла http://support.microsoft.com/kb/980263
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.