Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QbyteArray и русские символы.
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
sawerset
Есть QbyteArray в нем находятся русские буквы.
При преобразовании его в Qstring (QString::fromAscii()) содержимое строки получается вот такое "\\\320\\237\\321\\200\\320\\270\\320\\262\\320\\265\\321\\202\" . Как преобразовать QbyteArray в Qstring так чтобы оно буквы были буквами.
SABROG
Зависит от того в какой кодировке русские буквы попали в QByteArray.
rnd
Можно так:

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


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

тогда будет автоматическая конвертация во время всех вызовов QString::fromAscii(...)
Litkevich Yuriy
Цитата(sawerset @ 14.10.2009, 2:52) *
QString::fromAscii()
вообще-то в ASCII нет русских символов, т.к. это 7-битная таблица
rnd
сейчас, в основном, говоря аскии, подразумевают расширенную (8-битную) аскии, наверно отсюда и название
AlexV
Для взаимодействия с QByteArray (или char*) используйте toLocal8Bit() и fromLocal8Bit() класса QString
sawerset
Если во время отладки в gdb для строки (char[]) сделать display то
То будет такое содержимое как приведено мною раньше.
У charset значение ASCII. Как этот результат display перевести в нормальные буквы.
Kagami
Простое решение - поставить Qt Creator и отлаживать в нем. У него есть дополнительные средства для отображения типов Qt в GDB.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.