Russian Qt Forum

Qt => Вопросы новичков => Тема начата: NickB53 от Октябрь 12, 2013, 10:37



Название: Неправильно отображается русский текст
Отправлено: NickB53 от Октябрь 12, 2013, 10:37
Что надо сделать чтобы русские буквы отображались правильно из такого кода:
QLabel *label;
label->setText("Руский текст");
 Среда разработки = VS2010, Win7 32 bit.

Использовать транслятор неохота да и незачем, т.к. программы для внутреннего использования (тестирование прошивки микропроцессора и т.п).
Спасибо


Название: Re: Неправильно отображается русский текст
Отправлено: gil9red от Октябрь 12, 2013, 10:41
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("cp1251"))
Это зависит от того в какой кодировки ваши файлы с кодом :)


Название: Re: Неправильно отображается русский текст
Отправлено: LisandreL от Октябрь 12, 2013, 11:03
Но лучше сразу в utf-8 исходники переводить. Всё равно в Qt5 это единственный вариант.


Название: Re: Неправильно отображается русский текст
Отправлено: NickB53 от Октябрь 12, 2013, 11:11
А  как это можно (преобразовать исходники в UTF-8) в среде VC2010


Название: Re: Неправильно отображается русский текст
Отправлено: Bepec от Октябрь 12, 2013, 11:35
VS2010 спокойно кушает UTF 8. Только преобразовывать сама не умеет. У меня под это имеется консольная программка, недавно написал. Тупо H, CPP переводит в UTF8 Ж)


Название: Re: Неправильно отображается русский текст
Отправлено: sergek от Октябрь 12, 2013, 14:07
А  как это можно (преобразовать исходники в UTF-8) в среде VC2010
http://anton-pribora.ru/projects/recoder/ (http://anton-pribora.ru/projects/recoder/)
BOM в файлах, которые кушает программа, удаляйте, в противном случае можно поиметь лишний гимор ;)


Название: Re: Неправильно отображается русский текст
Отправлено: NickB53 от Октябрь 12, 2013, 19:21
Спасибо


Название: Re: Неправильно отображается русский текст
Отправлено: Fregloin от Октябрь 12, 2013, 20:15
я всегда использую подход типа
label->setText(trUtf8("Кириллица"));


Название: Re: Неправильно отображается русский текст
Отправлено: gil9red от Октябрь 12, 2013, 20:40
Но лучше сразу в utf-8 исходники переводить. Всё равно в Qt5 это единственный вариант.
Предположил, что автор работает на винде, а там по дэфолту 1251 кодировка :)

NotePad++ позволяет легко кодировать файлы ))
И при конвертировании в utf можно будет выбрать кодировать ли с BOM )
Сам им пользуюсь, так как:
1. работаю на винде
2. файлы с кодом держу в utf8


Название: Re: Неправильно отображается русский текст
Отправлено: lit-uriy от Октябрь 13, 2013, 11:48
открой пример из поставки Qt
examples\tools\codecs
там редактор с возможностью перекодировать файлы


Название: Re: Неправильно отображается русский текст
Отправлено: gil9red от Октябрь 13, 2013, 20:16
Не знал, про этот пример =(
Спасибо, очень интересен! :)

Кст, utf8 он сохраняет без BOM :)


Название: Re: Неправильно отображается русский текст
Отправлено: LisandreL от Октябрь 13, 2013, 21:19
Предположил, что автор работает на винде, а там по дэфолту 1251 кодировка
Свежие криэйторы по умолчанию utf8 ставят (хотя раньше тоже системную кодировку ставили). Про VS не в курсе.

я всегда использую подход типа
label->setText(trUtf8("Кириллица"));
К слову в Qt5 упразднили trUtf8.

NotePad++ позволяет легко кодировать файлы
Пакетного преобразования вроде нет, а если проект уже есть и большой, то по одному файлу перекодировать как-то уныло. 


Название: Re: Неправильно отображается русский текст
Отправлено: Fregloin от Октябрь 17, 2013, 09:45
на счёт упразднили trUtf8 не знаю, но у меня оно работает в 5м Qt...
Т.к. сейчас веду разработку временно под виндой, то все работает как надо именно с trUtf8.


Название: Re: Неправильно отображается русский текст
Отправлено: LisandreL от Октябрь 17, 2013, 10:43
на счёт упразднили trUtf8 не знаю, но у меня оно работает в 5м Qt...
Т.к. сейчас веду разработку временно под виндой, то все работает как надо именно с trUtf8.
Ну не совсем правильно выразился.
Пока что он имеется, но указан как QT_DEPRECATED и в документации находится в Obsolete Members for QObject.


Название: Re: Неправильно отображается русский текст
Отправлено: Alexu007 от Ноябрь 08, 2013, 07:12
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("cp1251"))
Это зависит от того в какой кодировки ваши файлы с кодом :)

Только надо добавить #include <QTextCodec>, иначе ругается при компиляции. Пустячок, а неприятно, пришлось тратить время на поиски ошибки.

Это можна добавить и в main.cpp, и в widget.cpp в конструктор - работает и так и так. А куда правильнее?


Название: Re: Неправильно отображается русский текст
Отправлено: carrygun от Ноябрь 08, 2013, 12:55
В main.