crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Русский текст в XML-ки
ruzik
  опции профиля:
сообщение 12.2.2012, 14:48
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 254
Регистрация: 23.2.2011
Из: Саратов
Пользователь №: 2436

Спасибо сказали: 2 раз(а)




Репутация:   0  


Здравствуйте, не подскажите как можно правильно отобразить русский текст из XMl-ки, пытался сделать, что-то типа этого:
QString str = domElement.attribute("name",tr("New folder"));
    QTextCodec * codec = QTextCodec::codecForLocale();
    itemModel->setData(newIndex,codec->toUnicode(str.toLatin1()));

Пробовал вместо toLatin1() toLocal8bit() - все тщетно
Заранее спасибо!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 12.2.2012, 15:25
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


если глянуть в xml, там видно какая кодировака. Туда и to :-) Если не указано, думаю utf-8

Сообщение отредактировал maint - 12.2.2012, 15:25
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ruzik
  опции профиля:
сообщение 12.2.2012, 16:12
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 254
Регистрация: 23.2.2011
Из: Саратов
Пользователь №: 2436

Спасибо сказали: 2 раз(а)




Репутация:   0  


Ну вот я знаю, что кодировка, скажем, utf-8, а дальше QString::fromUtf8()?
И если да, то не подскажите есть в самом QString функция перевода из QString в * char, ибо функция fromUtf8() принимает массив char, а лишний раз нагромождать код не хочется
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 12.2.2012, 16:37
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


Цитата(ruzik @ 12.2.2012, 22:12) *
Ну вот я знаю, что кодировка, скажем, utf-8, а дальше QString::fromUtf8()?
И если да, то не подскажите есть в самом QString функция перевода из QString в * char, ибо функция fromUtf8() принимает массив char, а лишний раз нагромождать код не хочется

QString ssss;
const char *s;
s = ssss.toStdString().c_str();
где то так преобразование идет
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 12.2.2012, 20:21
Сообщение #5





Гости








    


bool QDomDocument::setContent ( const QByteArray & data, bool namespaceProcessing, QString * errorMsg = 0, int * errorLine = 0, int * errorColumn = 0 )
This function parses the XML document from the byte array data and sets it as the content of the document. It tries to detect the encoding of the document as required by the XML specification.
....
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ruzik
  опции профиля:
сообщение 12.2.2012, 21:42
Сообщение #6


Активный участник
***

Группа: Участник
Сообщений: 254
Регистрация: 23.2.2011
Из: Саратов
Пользователь №: 2436

Спасибо сказали: 2 раз(а)




Репутация:   0  


Ни с массивом char, ни с тупо QByteArray ничего не вышло, хотя метод canEncode() класса QTextCodec уверяет, что должно было выйти:
QString RDataItemModel::fromUtf8(const QString str)
{    
    return QString::fromUtf8(str.toStdString().c_str());
}

QString RDataItemModel::fromUtf8(const QString str)
{
    QTextCodec * c = QTextCodec::codecForName("UTF-8");
    if(c->canEncode(str))
    {
        const QByteArray ar = QVariant(str).toByteArray();
        return c->toUnicode(ar);
    }
    else
        qDebug() << "!!!!"; //Ни разу не выдал
}

Везде результат одинаковый, английские буквы не трогает, а русские превращает в крякозябры

Нашел возможный корень зол:
Записать в utf8 тоже не получается, пробовал так:
QVariant( this->itemFromIndex(newIndex)->text().toUtf8() ).toString();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 13.2.2012, 0:52
Сообщение #7





Гости








    


Для тех кто в танке, перекодировать в ручную ничего не надо при условии что в xml верно пописанна кодировка, или если файл в кодировке utf-8, это верно и для dom и для sax.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zloiia
  опции профиля:
сообщение 20.7.2012, 14:28
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 25
Регистрация: 5.5.2011
Пользователь №: 2655

Спасибо сказали: 5 раз(а)




Репутация:   0  


Тему по диагонали прочитал, но QTextCodec воспользоваться не пробовали? Он меня не раз спасал.
#include <QTextCodec>
...
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale()); //для всех строк выставляет кодировку текущей локали


Упс, прошу прощения, ruzik аналогичное предложил.

Сообщение отредактировал zloiia - 20.7.2012, 14:30
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги


4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 23.11.2024, 21:49