Russian Qt Forum

Qt => Общие вопросы => Тема начата: berik.kz от Октябрь 05, 2009, 15:01



Название: QChar to ascii
Отправлено: berik.kz от Октябрь 05, 2009, 15:01
В общем вопрос покажется некоторым элементарным.
Почему при считывании с файла in.txt(µbЁ),переменная ch типа QChar выводит на экран все символы,а при конвертации в ascii код на экран выводит неопределенный(?) символ или присваивает значение 0?

Код:
QFile in;
in.open;
QTextStream inData(&in);
QChar ch;
while(!inData.atEnd()) {
        inData>>ch;
qDebug()<<ch<<(quint8)ch.toLatin1();
}

Output:

'µ' 181
'b' 98
'Ё' 0
<- Почему?  ???

Хотя Ё = 168 в Ascii


Название: Re: QChar to ascii
Отправлено: spirit от Октябрь 05, 2009, 15:13
используй QChar::unicode.


Название: Re: QChar to ascii
Отправлено: berik.kz от Октябрь 06, 2009, 07:01
используй QChar::unicode.
QChar::unicode использовал не помогает.
Ё = 1025 в unicode
Ё = A8 в HEX (168 в DEC)
тогда каким образом можно получить цифру 168 используя unicode метод?  ???


Название: Re: QChar to ascii
Отправлено: Rcus от Октябрь 06, 2009, 07:18
Символа 'Ё' нет в ASCII, метод toAscii() по-умолчанию переводит символы в кодировку Latin-1 (ISO 8859-1), поэтому машинное представление 'µ' неотличимо от представления в кодировке Windows-1251 (в которой символу 'Ё' соответствует код 168). Смотрите QTextCodec.


Название: Re: QChar to ascii
Отправлено: berik.kz от Октябрь 06, 2009, 07:57
Символа 'Ё' нет в ASCII, метод toAscii() по-умолчанию переводит символы в кодировку Latin-1 (ISO 8859-1), поэтому машинное представление 'µ' неотличимо от представления в кодировке Windows-1251 (в которой символу 'Ё' соответствует код 168). Смотрите QTextCodec.
Теперь понятно.
Спасибо.


Название: Re: QChar to ascii
Отправлено: motodrug от Октябрь 12, 2009, 09:13
Вообще, для конвертации unicode строк в консольный вывод есть специальная функция: qPrintable().
Посмотри доку, может поможет.

С уважением.