crossplatform.ru

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

> Русская кодировка в Qt, Не видны буквы...
++Norton++
  опции профиля:
сообщение 12.2.2009, 14:58
Сообщение #1


Студент
*

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

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




Репутация:   1  


Есть такой вот такие куски кода:

if(!test.open(QIODevice::Append | QIODevice::Text)) { ui->statusLabel->setText("Ругаюсь: Не могу открыть файл"); return 1; }


и

QTextStream out1(&test);
QTextStream out2(&counter);

out1 << "This is test: Тест";
out2 << "final";


В первом случае в statusLabel (label) выводятся нечитаемые символы неизвестной кодировки.
Во втором случае в файл записывается только "This is test: ". Слово "Тест" в него вообще не записывается.
Вопрос в том, можно ли как-нибудь это все поправить?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 12.2.2009, 15:43
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(AD @ 12.2.2009, 18:14) *
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251")); ///< Для строковых констант
Это не для констант, а для внутреннего преобразования QString/QByteArray
и для строк лучше так не задовать кодировку

можно так:
    QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());  // Для внутренних преобразований Qt
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); // Для функций перевода tr()


для вывода в консоль можно отдельно задать кодировку:
QTextCodec *concodec = QTextCodec::codecForName(CON_ENCOD);        // Кодек для консоли
QTextStream out(stdout);
out.setCodec(concodec);
out << tr("Мой текст");

CON_ENCOD - требуемый кодек
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- ++Norton++   Русская кодировка в Qt   12.2.2009, 14:58
- - SABROG   Вопрос в том в какой кодировке у тебя исходники. О...   12.2.2009, 15:13
- - AD   В функции main() указать: QTextCodec::setC...   12.2.2009, 15:14
- - Litkevich Yuriy   Цитата(AD @ 12.2.2009, 18:14) QTextCodec:...   12.2.2009, 15:43
|- - AD   Цитата(Litkevich Yuriy @ 12.2.2009, 15:43...   12.2.2009, 17:12
- - ++Norton++   Спасибо! Только еще один вопрос. Ругается на с...   12.2.2009, 16:22
- - Litkevich Yuriy   Цитата(++Norton++ @ 12.2....   12.2.2009, 16:23
- - ++Norton++   А как же тогда можно преобразовать текст с помощью...   12.2.2009, 16:29
- - Litkevich Yuriy   от кого унаследован Widget? приведи объявление это...   12.2.2009, 16:37
- - ++Norton++   Вот объявление (в widget.cpp): Widget::Wid...   12.2.2009, 16:44
- - Litkevich Yuriy   Цитата(++Norton++ @ 12.2....   12.2.2009, 16:51
- - Litkevich Yuriy   Цитата(AD @ 12.2.2009, 20:12) Windows-125...   12.2.2009, 17:19
|- - AD   Цитата(Litkevich Yuriy @ 12.2.2009, 17:19...   12.2.2009, 17:54
- - Константин   если исходники в ютф-8, то вместо tr() пользовать ...   12.2.2009, 17:46
- - Litkevich Yuriy   Цитата(Константин @ 12.2.2009, 20:46) а л...   12.2.2009, 17:50
- - Константин   Цитата(Litkevich Yuriy @ 12.2.2009, 17:50...   12.2.2009, 17:56
|- - molchanoviv   Цитата(Константин @ 12.2.2009, 17:56) Цит...   12.2.2009, 21:13
- - Litkevich Yuriy   Цитата(AD @ 12.2.2009, 20:54) Так и надо ...   12.2.2009, 18:33
- - Константин   Цитата(Litkevich Yuriy @ 12.2.2009, 18:33...   12.2.2009, 19:25
- - Litkevich Yuriy   Цитата(Константин @ 12.2.2009, 22:25) как...   12.2.2009, 20:31
- - ++Norton++   Дело в том, что как раз надо записать в файл строк...   13.2.2009, 0:59
|- - SABROG   Цитата(++Norton++ @ 13.2....   13.2.2009, 1:12
- - Litkevich Yuriy   Цитата(++Norton++ @ 13.2....   13.2.2009, 3:01


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


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




RSS Текстовая версия Сейчас: 29.3.2024, 15:10