Russian Qt Forum

Qt => Общие вопросы => Тема начата: voral от Февраль 25, 2011, 03:03



Название: Пеобазование символов
Отправлено: voral от Февраль 25, 2011, 03:03
Получаю извне xml файл. Некоторые данные набранные на русском приходят в следующем виде:
Цитировать
т е с т  п
Далее все это "заносится" в QStandardItem и отображается через стандартные виджеты.
Есть ли метод/алгоритм для преобразования?
Язык может быть (и даже скорее  всего) может быть другим.


Название: Re: Пеобазование символов
Отправлено: GreatSnake от Февраль 25, 2011, 09:07
Чем парсите этот xml?


Название: Re: Пеобазование символов
Отправлено: voral от Февраль 25, 2011, 09:54
Чем парсите этот xml?
QDomDocument
QDomElement

Для примера
Код:
QDomElement child = domElement.firstChildElement();
QStandardItem *body= new QStandardItem(child.text());

Вообще решили "решить" эту проблему на отправляющей стороне. Но все же хочется найти решение "на всякий случай".
В принципе, как я понимаю, здесь идет код символа, т.е. надо этот код преобазовать в символ. Хотя надо и азобаться с кодовой станицей


Название: Re: Пеобазование символов
Отправлено: garryHotDog от Февраль 26, 2011, 20:58
Может я что то не так понял, но дело в кодировке файла....тогда попробуйте:
Код
C++ (Qt)
QTextStream Stream(&m_inFile);
Stream.setCodec("Windows-1251");
QString xmlText=Stream.readAll();
 
QString errStr;
int errLine;
int errColumn;
 
//read xml.
if( doc.setContent(xmlText,&errStr,&errLine,&errColumn) )
{
//set root element
root=doc.documentElement();
 
//check root element
if(root.tagName()=="CompilerProSettings")
{
// set result
result=TRUE;
}
else{m_sLastError="The file-config.xml is not a CompilerPro config file.";}
}
 


Название: Re: Пеобазование символов
Отправлено: voral от Февраль 28, 2011, 02:27
Может я что то не так понял, но дело в кодировке файла....тогда попробуйте:
Да в кодировке. Но не не совсем в этом плане :)
Суть такая. Этот xml заполнялся через вебформу. Фишка в том, то в мета тегах была указана кодировка iso-88.... а в системе где эта форма заполнялась UTF8. И уже сам браузер преобразовывал в такой вид символы. В довесок ко всему пи фомиовании xml еще и ампесанд заменялся на & .
В принципе ваш метод можно попробовать вернув обратно амперсанд.