crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QbyteArray и русские символы.
sawerset
  опции профиля:
сообщение 13.10.2009, 22:52
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 20
Регистрация: 26.11.2008
Пользователь №: 434

Спасибо сказали: 2 раз(а)




Репутация:   0  


Есть QbyteArray в нем находятся русские буквы.
При преобразовании его в Qstring (QString::fromAscii()) содержимое строки получается вот такое "\\\320\\237\\321\\200\\320\\270\\320\\262\\320\\265\\321\\202\" . Как преобразовать QbyteArray в Qstring так чтобы оно буквы были буквами.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 13.10.2009, 22:58
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Зависит от того в какой кодировке русские буквы попали в QByteArray.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
rnd
  опции профиля:
сообщение 14.10.2009, 7:48
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 54
Регистрация: 22.7.2009
Пользователь №: 930

Спасибо сказали: 1 раз(а)




Репутация:   0  


Можно так:

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
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(sawerset @ 14.10.2009, 2:52) *
QString::fromAscii()
вообще-то в ASCII нет русских символов, т.к. это 7-битная таблица
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
rnd
  опции профиля:
сообщение 15.10.2009, 21:20
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 54
Регистрация: 22.7.2009
Пользователь №: 930

Спасибо сказали: 1 раз(а)




Репутация:   0  


сейчас, в основном, говоря аскии, подразумевают расширенную (8-битную) аскии, наверно отсюда и название
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_AlexV_*
сообщение 16.10.2009, 11:33
Сообщение #6





Гости








    


Для взаимодействия с QByteArray (или char*) используйте toLocal8Bit() и fromLocal8Bit() класса QString
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
sawerset
  опции профиля:
сообщение 17.10.2009, 0:18
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 20
Регистрация: 26.11.2008
Пользователь №: 434

Спасибо сказали: 2 раз(а)




Репутация:   0  


Если во время отладки в gdb для строки (char[]) сделать display то
То будет такое содержимое как приведено мною раньше.
У charset значение ASCII. Как этот результат display перевести в нормальные буквы.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Kagami
  опции профиля:
сообщение 17.10.2009, 9:26
Сообщение #8


Старейший участник
****

Группа: Участник
Сообщений: 601
Регистрация: 2.2.2009
Пользователь №: 523

Спасибо сказали: 101 раз(а)




Репутация:   9  


Простое решение - поставить Qt Creator и отлаживать в нем. У него есть дополнительные средства для отображения типов Qt в GDB.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


6 чел. читают эту тему (гостей: 6, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 2.12.2024, 9:07