crossplatform.ru

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


  Ответ в Русский текст в XML-ки
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


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


Упс, прошу прощения, ruzik аналогичное предложил.
Гость Дата 13.2.2012, 0:52
  Для тех кто в танке, перекодировать в ручную ничего не надо при условии что в xml верно пописанна кодировка, или если файл в кодировке utf-8, это верно и для dom и для sax.
ruzik Дата 12.2.2012, 21:42
  Ни с массивом 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();
Гость Дата 12.2.2012, 20:21
  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.
....
maint Дата 12.2.2012, 16:37
 
Цитата(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();
где то так преобразование идет
ruzik Дата 12.2.2012, 16:12
  Ну вот я знаю, что кодировка, скажем, utf-8, а дальше QString::fromUtf8()?
И если да, то не подскажите есть в самом QString функция перевода из QString в * char, ибо функция fromUtf8() принимает массив char, а лишний раз нагромождать код не хочется
maint Дата 12.2.2012, 15:25
  если глянуть в xml, там видно какая кодировака. Туда и to :-) Если не указано, думаю utf-8
ruzik Дата 12.2.2012, 14:48
  Здравствуйте, не подскажите как можно правильно отобразить русский текст из XMl-ки, пытался сделать, что-то типа этого:
QString str = domElement.attribute("name",tr("New folder"));
    QTextCodec * codec = QTextCodec::codecForLocale();
    itemModel->setData(newIndex,codec->toUnicode(str.toLatin1()));

Пробовал вместо toLatin1() toLocal8bit() - все тщетно
Заранее спасибо!
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 20.4.2024, 2:09