Отправляет email-рассылки с помощью сервиса Sendsay

Как извлечь символ из QCString?

Привет всем!!!

Столкнулся с такой проблемой.

Имеется строка QString, в которой есть не latin1 символы (в моем случае,
кириллица). Эта строка, как и подобает Qt , закодирована в utf16. Нужно
взять из этой стоки кириллический символ и преобразовать его в
hex-формат по ascii таблице, т. е. однобайтной, а не двубайтной, как в
utf16.

Мое решение:
1. Преобразую QString в utf8 - QString::utf8(). Получаю QCString.
2. Извлекаю из QCString нужный символ и преобразую его в int
3. Полученный int преобразую в hex.

Но вот проблема: в п. 2 нельзя "нормально" извлечь символ. Ему
соответсвуют два непонятных по значению байта, т. е. int(QCString[...]) < 0.

Что делать в этом случае?

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 27581; Возраст листа: 1117; Участников: 1697
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/580802

Ответить   Sun, 13 Aug 2006 23:11:16 +0400 (#580802)

 

Ответы:

Здравствуйте Роман
В сообщении от 13 августа 2006 23:11 Роман написал(a):

Делал что-то подобное для qt2 :

-544,7 +544,8 @@
highlight_ = (oldValue != QString(data));
}

- QListViewItem::setText(column, data);
+
+ QListViewItem::setText(column,
QString::fromLocal8Bit(data.ascii(),-1) );
repaint();
}

Ответить   Tue, 15 Aug 2006 08:39:36 +0400 (#580814)

 

13 августа 2006 23:11, Роман написал(а):

code = str.local8Bit()[index]
QString::local8Bit() - возвращает однобайтную строку в соответствии с локалью
(конечно, если у вас локаль однобайтная). Если нужно использовать какую-то
кодировку явно - см. QTextCodec.

Ответить   Tue, 15 Aug 2006 10:42:11 +0400 (#580834)

 

Андрей Черепанов wrote:

Спасибо всем кто ответил на этот сабж. Тема закрыта.

P. S. Информация на размышление: QString::QString("строка") не тоже
самое, что QString::setUnicode("строка").

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 27614; Возраст листа: 1118; Участников: 1697
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/581235

Ответить   Wed, 16 Aug 2006 20:35:53 +0400 (#581235)