Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Общие вопросы _ QbyteArray и русские символы.

Автор: sawerset 13.10.2009, 22:52

Есть QbyteArray в нем находятся русские буквы.
При преобразовании его в Qstring (QString::fromAscii()) содержимое строки получается вот такое "\\\320\\237\\321\\200\\320\\270\\320\\262\\320\\265\\321\\202\" . Как преобразовать QbyteArray в Qstring так чтобы оно буквы были буквами.

Автор: SABROG 13.10.2009, 22:58

Зависит от того в какой кодировке русские буквы попали в QByteArray.

Автор: rnd 14.10.2009, 7:48

Можно так:

QTextCodec* codec = QTextCodec::codecForName("ИМЯ_ИСХОДНОЙ_КОДИРОВКИ");
QByteArray encodedByteArray = ...;
QString decodedString = codec->toUnicode(encodedByteArray);


а можно установить кодек сразу для все null-terminated строк:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("ИМЯ_ИСХОДНОЙ_КОДИРОВКИ"));

тогда будет автоматическая конвертация во время всех вызовов QString::fromAscii(...)

Автор: Litkevich Yuriy 14.10.2009, 19:52

Цитата(sawerset @ 14.10.2009, 2:52) *
QString::fromAscii()
вообще-то в ASCII нет русских символов, т.к. это 7-битная таблица

Автор: rnd 15.10.2009, 21:20

сейчас, в основном, говоря аскии, подразумевают расширенную (8-битную) аскии, наверно отсюда и название

Автор: AlexV 16.10.2009, 11:33

Для взаимодействия с QByteArray (или char*) используйте toLocal8Bit() и fromLocal8Bit() класса QString

Автор: sawerset 17.10.2009, 0:18

Если во время отладки в gdb для строки (char[]) сделать display то
То будет такое содержимое как приведено мною раньше.
У charset значение ASCII. Как этот результат display перевести в нормальные буквы.

Автор: Kagami 17.10.2009, 9:26

Простое решение - поставить Qt Creator и отлаживать в нем. У него есть дополнительные средства для отображения типов Qt в GDB.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)