Форум » [x]Harbour » [?] HB_UTF8TOSTR » Ответить

[?] HB_UTF8TOSTR

Dima: В одну из моих прог косячные данные зашли в UTF8 и HB_UTF8TOSTR упал :) Примерно так HB_UTF8TOSTR("<![CDATA[&2. Второй магазин]]>","RU866") В этой функции не предусмотрена защита от падений в таких ситуациях ?

Ответов - 7

SergKis: Dima Не могу вспомнить, или заблуждаюсь, но что то было (#PRAGMA или переменная) для отключения срабатывания macro, т.е. на это время отключить и потом включить

alkresin: А почему он, собственно, упал? Обычно просто '?' вставляет в результат. И о каком макро речь? Я чего-то не догоняю?

Dima: alkresin Похоже HB_UTF8TOSTR не при чем и как то не верно (или я его не понял на счет результата) отработал HXmlDoc class при разборе XML У меня там код есть ....HB_UTF8TOSTR(k[3][j+1]:aitems[1],"RU866") так вот первым параметром попала не строка а объект. Хотя 3 года почти работало и не было проблем и всегда туда падала строка В XML так [pre2] <key>analyticsID</key> <string>7344</string> <key>clientID</key> <string>7344</string> <key>comment</key> <string><![CDATA[&2. Второй магазин]]></string> [/pre2] и тогда падает и при таком раскладе k[3][j+1]:aitems[1]:title == NIL а если исправить на [pre2] <key>analyticsID</key> <string>7344</string> <key>clientID</key> <string>7344</string> <key>comment</key> <string>Второй магазин</string> [/pre2] то все нормально


alkresin: Это HXMLDOC, который из HwGUI? А CDATA и раньше был там, или только сейчас вместо строки появился?

Dima: alkresin пишет: Это HXMLDOC, который из HwGUI? Да alkresin пишет: А CDATA и раньше был там, или только сейчас вместо строки появился? Да , это Панагент как то не верно данные передал в примечании а там было забито "&2. Второй магазин" а в XML от Пана приплыло <![CDATA[&2. Второй магазин]]> Я им конечно в поддержку отписал....ранее фишек с CDATA не было.

alkresin: Амперсанд - спецсимвол все-таки, поэтому, возможно, строку автоматом обернули в CDATA. Наверное, в программе надо добавить проверку, строка это или объект.

Dima: alkresin Мысль понял , спасибо и пошёл переделывать.



полная версия страницы