Russian Qt Forum

Qt => Общие вопросы => Тема начата: phpCoder от Апрель 01, 2015, 17:39



Название: QTextCodec и русские буквы
Отправлено: phpCoder от Апрель 01, 2015, 17:39
Код:
Код
C++ (Qt)
QString text; QTextStream out(&text);
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForLocale(codec);
out.setCodec("UTF-8");
out << "русский язык";
qDebug() << text;
Выводит:
Код:
N?N?N?N??????? N??·N???
Где русские буквы?

Qt 5.4.0


Название: Re: QTextCodec и русские буквы
Отправлено: Bepec от Апрель 01, 2015, 20:35
а куда вы выводите?


Название: Re: QTextCodec и русские буквы
Отправлено: kambala от Апрель 01, 2015, 20:40
в файл выводи и увидишь, что все работает нормально. правда при условии, что исходник твой в кодировке utf-8.


Название: Re: QTextCodec и русские буквы
Отправлено: sociopath от Апрель 02, 2015, 11:03
QTextStream & QTextStream::operator<< ( const char * string )
This is an overloaded function.

Writes the constant string pointed to by string to the stream. string is assumed to be in ISO-8859-1 encoding. This operator is convenient when working with constant string data.


Название: Re: QTextCodec и русские буквы
Отправлено: phpCoder от Апрель 02, 2015, 14:21
Что в файл, что в консоль - одно и то же.
Значит с русским языком туго?


Название: Re: QTextCodec и русские буквы
Отправлено: sociopath от Апрель 02, 2015, 14:33
Мой предыдущий комментарий посмотрите. Не нужно передавать в QTextStream const char*, потому что QTextStream записывает эту строку в кодировке ISO-8859-1 (Latin1). QByteArray тоже передавать не стоит, потому что он при перекодировании будет использовать функцию fromAscii(). Если хотите в QTextStream передавать строки - передавайте QString:
Код:
out << QString::fromUtf8("русский язык");


Название: Re: QTextCodec и русские буквы
Отправлено: Пантер от Апрель 02, 2015, 15:50
И тут весь такой я со своей подписью (второй пункт).


Название: Re: QTextCodec и русские буквы
Отправлено: phpCoder от Апрель 02, 2015, 20:14
Ясно, всем спасибо.