Полная версия этой страницы:
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 так чтобы оно буквы были буквами.
Зависит от того в какой кодировке русские буквы попали в QByteArray.
Можно так:
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-битная таблица
сейчас, в основном, говоря аскии, подразумевают расширенную (8-битную) аскии, наверно отсюда и название
Для взаимодействия с QByteArray (или char*) используйте toLocal8Bit() и fromLocal8Bit() класса QString
sawerset
17.10.2009, 0:18
Если во время отладки в gdb для строки (char[]) сделать display то
То будет такое содержимое как приведено мною раньше.
У charset значение ASCII. Как этот результат display перевести в нормальные буквы.
Простое решение - поставить Qt Creator и отлаживать в нем. У него есть дополнительные средства для отображения типов Qt в GDB.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.