Как преобразовать QChar в код символа в таблице cp866?
Как получить int код qchar в этой таблице http://www.ascii-codes.com/cp866.html?
Вот мой код:
int getCp866Code(QChar c) {
if (!c.isSurrogate()) {
QString temp = c;
QTextCodec* cp866 = QTextCodec::codecForName("IBM 866");
QByteArray byteArray = cp866->fromUnicode(temp);
return (int) byteArray[0];
}
return -1;
}
getCp866Code ('ж') // возвращает -90, а не 166
1 ответ
Вопрос плохо поставлен. QChar - это кодовая единица UTF-16 (что также означает, что он может быть частью суррогатной пары). Ваш лучший выстрел будет
- Убедитесь, что это не часть суррогатной пары (
QChar::isSurrogate
) - Создайте QString, состоящую только из этого символа, затем используйте QTextCodec для кодирования строки в CP866. Затем извлеките первый байт.
Обратите внимание, что неизвестно, что вы получите, если ваша кодовая точка не кодируется в CP866.