Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Проблема с отображением символов в файле


Автор: Lindemann66 24.8.2011, 10:44
Всем привет!

Такой вопрос
Нужно записать русский текст в кодировке UTF-8 в JSon файл
Для получения JSon использую, собственно, QJson
Вот код
Код

QVariantList changesList;
...
QVariantMap host;
...
host.insert("title", changes[i].title);
...
changesList << host;
...
QString json = QString(serializer.serialize(hostLinks));
QFile file(filename);
if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
    QMessageBox::warning(0, QObject::tr("File error"), QObject::tr("NewLinks file create error!"));
    return;
}
QTextStream out(&file);
out << json;
file.close();


changes[i].title - в данном случае содержит русский текст в UTF-8

так вот, при выполнении указанных операций в файл вместо руского текста записывается строка вида
Цитата

...C:/Users/\u0410\u043b\u0435\u043a\u0441\u0435\u0439/AppData/Roaming...


То есть, откуда-то берутся символы \u0410\u043b\ и т.д.

Кто-нибудь сталкивался с таким? Где-то нужно сделать обратное преобразование кодировки, или дело в QJson?

Буду благодарен за лобые советы

Автор: _GRIN_ 26.8.2011, 12:36
Lindemann66,  в какой кодировке ты просматриваешь файл? (по идее \u0410\u043b\u0435\u043a\u0441\u0435\u0439 это "алексей" в юникоде)

Автор: spyswamp 26.8.2011, 19:28
Попробуй QString делать из wchar'а: QString::fromStdWString(L"Валюта") например. По крайней мере, в GUI под Linux это решило вообще все проблемы с отображением русских строк.

И обязательно потом отпишись, как решишь проблему.

Автор: Lindemann66 26.8.2011, 22:47
Спасибо за ответыsmile

Цитата(_GRIN_ @  26.8.2011,  12:36 Найти цитируемый пост)
по идее \u0410\u043b\u0435\u043a\u0441\u0435\u0439 это "алексей" в юникоде

да, это я для примера взялsmile

Проблема, кстати, решилась
Там, где файл принимается, строка 
Цитата(Lindemann66 @  24.8.2011,  10:44 Найти цитируемый пост)
u0410\u043b\u0435\u043a\u0441\u0435\u0439

оказывается, преобразуется в "Алексей" корректно

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)