Discussion Board

Results 1 to 9 of 9
  1. #1
    Registered User gpodno's Avatar
    Join Date
    Sep 2008
    Posts
    3
    Используя пример http://blogs.forum.nokia.com/index.p...articleId=483& пробовал пропарсить xml
    Code:
    <?xml version="1.0" encoding="WINDOWS-1251"?>
    <document param="Тест">
    </document>
    CParser выдаёт ошибку -982 на это.
    Пробовал под s60 2 fp3.

    Сохранял документ в юникоде и ставил encoding="utf-16", парсит без проблем, но кирилица отображается неверно.

    Как же парсить xml с кирилицей?
    Заранее благодарен)
    Last edited by gpodno; 2009-05-17 at 15:02.

  2. #2
    Registered User SiNoptik's Avatar
    Join Date
    Dec 2005
    Posts
    93
    Сам документ у вас должен быть в utf-8. После этого, когда получаете значение параметра в 8-ми битном дескрипторе, нужно перекодировать эти данные в utf-8 (16-битный дескриптор). Для этого нужно воспользоваться классом CnvUtfConverter.

  3. #3
    Registered User gpodno's Avatar
    Join Date
    Sep 2008
    Posts
    3
    Quote Originally Posted by SiNoptik View Post
    Сам документ у вас должен быть в utf-8. После этого, когда получаете значение параметра в 8-ми битном дескрипторе, нужно перекодировать эти данные в utf-8 (16-битный дескриптор). Для этого нужно воспользоваться классом CnvUtfConverter.
    Спасибо за ответ.

    Действительно всё получается просто с помощью метода CnvUtfConverter::ConvertToUnicodeFromUtf8();

  4. #4
    Registered User pelesh's Avatar
    Join Date
    Oct 2011
    Posts
    9
    доброй ночи,я начинающий программист и мне очень сильно нужна помощь.
    получаю с сервера документ в utf-8 в нем нужно прочитать русский текст ошибки,он у меня вот так отображается
    <error>Введен неверный защитный код</error>
    при попытки CnvUtfConverter::ConvertToUnicodeFromUtf8() получаю ответ в таком виде
    \x0412\x0432\x0435\x0434\x0435\x043D \x043D\x0435\x0432\x0435\x0440\x043D\x044B\x0439 \x0437\x0430\x0449\x0438\x0442\x043D\x044B\x0439 \x043A\x043E\x0434

    так же с сервера приходит мне документ в cp1251 с такой белебердой
    <def>àáîíåíòñêàÿ ïëàòà 7.0 ðóá/ìåñÿö</def>

    вопрос,как мне получить нормальный русский текст и желательно еще в момент получения ответа с сервера?пользуюсь примером ClientEngine для получения файла с сервера и XmlHandler парсер.
    Last edited by pelesh; 2011-11-15 at 23:27.

  5. #5
    Nokia Developer Moderator A.A.M.'s Avatar
    Join Date
    Jan 2008
    Location
    Moscow, Russia
    Posts
    3,308
    Вот это и есть текст на кириллице в юникоде, так что всё вы делали правильно (см. таблицу "Cyrillic characters in Unicode")
    \x0412\x0432\x0435\x0434\x0435\x043D \x043D\x0435\x0432\x0435\x0440\x043D\x044B\x0439 \x0437\x0430\x0449\x0438\x0442\x043D\x044B\x0439 \x043A\x043E\x0434
    тут написано "Введен неверный защитный код". Именно в таком виде можно выводить надпись, например, в окне с сообщением пользователю.

  6. #6
    Registered User pelesh's Avatar
    Join Date
    Oct 2011
    Posts
    9
    а как,преобразовать <def>àáîíåíòñêàÿ ïëàòà 7.0 ðóá/ìåñÿö</def>
    что бы парсер не ругался 996?
    документ получаю в ср1251
    уже замучился досмерти,но надо сделать =\

    или же есть возможность переделать ClientEngine таким образом ,что бы получать с сервера байты,а потом вешать кодировку на них?
    Last edited by pelesh; 2011-11-16 at 10:19.

  7. #7
    Nokia Developer Moderator A.A.M.'s Avatar
    Join Date
    Jan 2008
    Location
    Moscow, Russia
    Posts
    3,308
    В wiki есть пример "Conversion from one native character set to another native character set", вам оттуда нужна только та часть, где продемонстрировано преобразование из локальной кодировки в Unicode.

    Какой именно ClientEngine вы имеете в виду? В любом случае исходный текст ответа от сервера вы и так принимаете в байтах, а дальше как раз и идут различные преобразования.

  8. #8

  9. #9
    Nokia Developer Moderator A.A.M.'s Avatar
    Join Date
    Jan 2008
    Location
    Moscow, Russia
    Posts
    3,308
    И? В CClientEngine::MHFRunL() -> case THTTPEvent::EGotResponseBodyData происходит прием данных частями, каждая полученная часть передается наблюдателю. Соответственно, в обработчик ClientBodyReceived() приходят необработанные данные, которые были получены от сервера.
    То есть все как раз так, как было описано в предыдущем сообщении.

Similar Threads

  1. XML writing and Appending the Problem
    By talk2mishal in forum Mobile Java General
    Replies: 3
    Last Post: 2008-09-19, 19:24
  2. XML to WBXML in Windows
    By TMJ in forum Browsing and Mark-ups
    Replies: 0
    Last Post: 2006-12-25, 21:59

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Nokia Developer aims to help you create apps and publish them so you can connect with users around the world.

京ICP备05048969号  © Copyright Nokia 2013 All rights reserved