Russian Qt Forum
Ноябрь 24, 2024, 02:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Конвертирование кодировки [Решено + QtJSONKit]  (Прочитано 6301 раз)
dangreen
Гость
« : Июнь 30, 2012, 22:40 »

сервер выдает следующую иформацию

Код:
[{"SectionID":"dev","Section":{"FR":"La Development","EN":"Development","RU":"\u0420\u00a0\u0421\u0453\u0421\u0403"}},{"SectionID":"im","Section":null}]

все это суетса в строку, но "\u0420\u00a0\u0421\u0453\u0421\u0403" не кодируется в нормальные буквы, как и что можно сделать что бы все это воспринималось как нормальные русские буквы?
« Последнее редактирование: Июль 01, 2012, 23:03 от dangreen » Записан
dangreen
Гость
« Ответ #1 : Июль 01, 2012, 07:38 »

поможет кто?
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #2 : Июль 01, 2012, 11:26 »

Похоже на UTF-16. Парси ручками строку и формируй результат. Встроенной функции скорее всего нет. Разве что в исходниках какого-нибудь Xml парсера в привате....
Записан

Гугль в помощь
dangreen
Гость
« Ответ #3 : Июль 01, 2012, 17:21 »

Похоже на UTF-16. Парси ручками строку и формируй результат. Встроенной функции скорее всего нет. Разве что в исходниках какого-нибудь Xml парсера в привате....

выделить то эти символы несложно
как их сконвертировать?
Записан
Kolobok
Гость
« Ответ #4 : Июль 01, 2012, 17:52 »

QString QString::fromUcs4 ( const uint * unicode, int size = -1 ) [static]
QString QString::fromUtf16 ( const ushort * unicode, int size = -1 ) [static]
Записан
dangreen
Гость
« Ответ #5 : Июль 01, 2012, 18:51 »

QString QString::fromUcs4 ( const uint * unicode, int size = -1 ) [static]
QString QString::fromUtf16 ( const ushort * unicode, int size = -1 ) [static]

ну так и я могу, а вот как QString сначала в uint/ushort перекодировать ?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #6 : Июль 01, 2012, 19:57 »

ручками трудно из строки числовые коды вытащить и засунуть в массив?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
dangreen
Гость
« Ответ #7 : Июль 01, 2012, 20:42 »

ручками трудно из строки числовые коды вытащить и засунуть в массив?

и что дальше? можно по подробней пожалуста, еслиб я понимал все это то не спрашивал бы
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #8 : Июль 01, 2012, 21:48 »

а дальше – воспользоваться одним из методов, который предложил Kolobok.

находишь начало и конец куска с юникод-символами, дёргаешь оттуда числовые коды в виде строки, конвертируешь их через QString::toUShort(0, 16) и помещаешь в массив ushort[], получаешь строку из массива с помощью QString::fromUtf16(), вставляешь вместо юникода в свою строку (начало и конец мы знаем). повторять в цикле пока есть куски юникода. реализацию алгоритма оставляем нашим читателям в качестве домашнего задания Улыбающийся
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
dangreen
Гость
« Ответ #9 : Июль 01, 2012, 22:20 »

а дальше – воспользоваться одним из методов, который предложил Kolobok.

находишь начало и конец куска с юникод-символами, дёргаешь оттуда числовые коды в виде строки, конвертируешь их через QString::toUShort(0, 16) и помещаешь в массив ushort[], получаешь строку из массива с помощью QString::fromUtf16(), вставляешь вместо юникода в свою строку (начало и конец мы знаем). повторять в цикле пока есть куски юникода. реализацию алгоритма оставляем нашим читателям в качестве домашнего задания Улыбающийся

toUshort возвращает ushort
а fromUtf16 в параметре const ushort*
Записан
dangreen
Гость
« Ответ #10 : Июль 01, 2012, 23:02 »

проблема оказалась мнимой... на сервер залезло эта злосчастная строка..

ну сразу тогда выкладываю  класс для кодирования и декодирования JSON в QHash<QString,QVariant>
« Последнее редактирование: Июль 01, 2012, 23:11 от dangreen » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #11 : Июль 02, 2012, 00:37 »

а дальше – воспользоваться одним из методов, который предложил Kolobok.

находишь начало и конец куска с юникод-символами, дёргаешь оттуда числовые коды в виде строки, конвертируешь их через QString::toUShort(0, 16) и помещаешь в массив ushort[], получаешь строку из массива с помощью QString::fromUtf16(), вставляешь вместо юникода в свою строку (начало и конец мы знаем). повторять в цикле пока есть куски юникода. реализацию алгоритма оставляем нашим читателям в качестве домашнего задания Улыбающийся

toUshort возвращает ushort
а fromUtf16 в параметре const ushort*
предлагаю поучить плюсы чтобы узнать, что массив можно спокойно передавать в функцию, которая ожидает указатель
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.058 секунд. Запросов: 23.