Название: проблема со строками из xml Отправлено: antipart от Октябрь 07, 2006, 19:53 Подскажите пожалуйста чайнику.
Загружаю в переменную типа QString кириллические строчки из xml в кодировке utf8. Все казалось бы хорошо - в смысле отображения, но в дальнейшем не могу ни изменить, ни удалить содержимое переменной. Заранее спасибо за помощь и терпение. Название: проблема со строками из xml Отправлено: Dendy от Октябрь 08, 2006, 07:12 Что значит не можешь изменить? Все значения QString передаются как копии и именно с копией тьІ модешь делать все что угодно.
Название: проблема со строками из xml Отправлено: antipart от Октябрь 08, 2006, 08:15 Забыл ... проблема не только с кириллицей, но и с латинским шрифтом
копируемым из xml в код. utf8 приходится делать примерно такое шаманство : QString fon_describe = (textNode.toText().data()).toLatin1(); если не перекодировать в момент копирования , то результат тот же - немогу ни изменить (например fon_describe ="aaa") , ни удалить. Причем пробовал удалять посимвольно с начала и с конца , пришел к выводу , что вся беда с последним символом, (т.е если удалять сначала удаляются все буквы кроме последней , если с конца то ни одной) скорее всего , что-то я делаю не так в момент первого присваивания или до конца не понимаю структуру utf8 строки Название: проблема со строками из xml Отправлено: Dendy от Октябрь 08, 2006, 09:28 Чесно. Я совершенно не вьехал в суть проблемьІ.
Что именно тьІ пьІтаешься изменить/удалить? Екземпляр QString? Или узел DOM'а? Название: проблема со строками из xml Отправлено: antipart от Октябрь 08, 2006, 14:00 Xml файл у меня только считывается и более ничего я с ним не делаю...
Есть глобальная переменная типа QString (допустим Str).... В нее (Str) я копирую из xml строку с кодировкой Utf8 .... Далее я не могу ее (Str) ни изменить, ни удалить ... Валит ошибки что-то связанное с Breakpoint, короче, с памятью.... Что только не пробовал см. выше.... С латинским текстом спасла перекодировка.... С кириллицей не знаю что делать.... Вот вобщем то и вся проблема , но она меня уже достала.....: не могу удалить объекты в которые входятЪ такие строки как Str!!! Думаю , что - то у меня с кодировкой Utf8... НО скорее всего - КРИВЫЕ_ПАЛЬЦЫ.RU.... Название: проблема со строками из xml Отправлено: Dendy от Октябрь 08, 2006, 18:35 Покажи код.
Название: проблема со строками из xml Отправлено: bigirbis от Октябрь 09, 2006, 08:41 Интересно, каким образом инициализируется QDomDocument и как идет работа с кодировкой
Название: проблема со строками из xml Отправлено: antipart от Октябрь 09, 2006, 20:54 Вот отрывок кода:
QString test_goal;//глобальная переменная bool LoadTest(QString fileName) { QDomDocument doc; QFile file(fileName); if (!file.open(QFile::ReadOnly | QFile::Text)) {return false;} if (!doc.setContent(&file)) { return false;} QDomElement root = doc.documentElement(); if (root.tagName() != "TEST_STRUCTURE") { return false;} QDomNode node = root.firstChild(); if (node.toElement().tagName() == "HEADER") { QDomNode childNode = node.firstChild(); test_goal = childNode.toElement().text(); childNode = childNode.nextSibling(); ..... и т.д. } return true; } далее не могу, например : test_goal ="aaaf"; если удалять по одному символу, то не удаляется последний "f" ломается на этом месте Если в test_goal копируется строка с латинскими буквами , то спасает такое кривое решение: ....... if (node.toElement().tagName() == "HEADER") { QDomNode childNode = node.firstChild(); QDomNode textNode = childNode_3.firstChild(); test_goal = (textNode.toText().data()).toLatin1(); childNode = childNode.nextSibling(); ..... и т.д. } ......... Если кириллица , то .... капец. [/code] добавлено спустя 7 минут: Прошу прощения ошибся вместо QDomNode textNode = childNode_3.firstChild(); надо QDomNode textNode = childNode.firstChild(); Название: проблема со строками из xml Отправлено: Dendy от Октябрь 09, 2006, 22:51 Напиши код, с помощью которого тьІ удаляешь символьІ из QString.
Название: проблема со строками из xml Отправлено: antipart от Октябрь 11, 2006, 09:15 Вообще по разному пробовал...
Например так: Код: QString str = "asdf"; причем длину показывает правильно -1 символ и отображает его верно.... Название: проблема со строками из xml Отправлено: bigirbis от Октябрь 11, 2006, 11:28 А что за версия Qt?
Название: проблема со строками из xml Отправлено: antipart от Октябрь 11, 2006, 14:18 Qt.Commercial.v4.0.1.for.Visual.Studio.6.0
Название: проблема со строками из xml Отправлено: bigirbis от Октябрь 11, 2006, 14:26 Попробуй собрать на чем-нибудь поновее.
Название: проблема со строками из xml Отправлено: antipart от Октябрь 11, 2006, 14:43 Да рад бы , но к сожалению не видел ничего новее под VC 6.0
... требование такое (vc 6.0)... добавлено спустя 5 минут: А вообще , в какую кодировку можно перевести Utf8_кириллическую_строку, чтобы отображалось правильно? Название: проблема со строками из xml Отправлено: bigirbis от Октябрь 11, 2006, 15:06 Установи кодек при чтении на UTF-8
А когда на визуалке отображаешь, перекодируй в Unicode Название: проблема со строками из xml Отправлено: antipart от Октябрь 11, 2006, 15:30 а разве чтение не происходит по умолчанию в Utf8?
...в том то и дело, что потом я уже ничего делать с ней не могу , даже перекодировать.... ...если только в момент первого присваивания, при чтении из xml.... ...как на этом этапе Код: test_goal = (textNode.toText().data()).toLatin1(); перекодировать в Unicode , вместо Latin1()? |