Здравствуйте, не подскажите как можно правильно отобразить русский текст из XMl-ки, пытался сделать, что-то типа этого:
QString str = domElement.attribute("name",tr("New folder"));
QTextCodec * codec = QTextCodec::codecForLocale();
itemModel->setData(newIndex,codec->toUnicode(str.toLatin1()));
если глянуть в xml, там видно какая кодировака. Туда и to :-) Если не указано, думаю utf-8
Ну вот я знаю, что кодировка, скажем, utf-8, а дальше QString::fromUtf8()?
И если да, то не подскажите есть в самом QString функция перевода из QString в * char, ибо функция fromUtf8() принимает массив char, а лишний раз нагромождать код не хочется
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.
....
Ни с массивом 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() << "!!!!"; //Ни разу не выдал
}
QVariant( this->itemFromIndex(newIndex)->text().toUtf8() ).toString();
Для тех кто в танке, перекодировать в ручную ничего не надо при условии что в xml верно пописанна кодировка, или если файл в кодировке utf-8, это верно и для dom и для sax.
Тему по диагонали прочитал, но http://www.doc.crossplatform.ru/qt/4.7.x/html-qt/qtextcodec.html воспользоваться не пробовали? Он меня не раз спасал.
#include <QTextCodec>
...
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale()); //для всех строк выставляет кодировку текущей локали
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)