Название: Конвертирование кодировки [Решено + QtJSONKit] Отправлено: 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" не кодируется в нормальные буквы, как и что можно сделать что бы все это воспринималось как нормальные русские буквы? Название: Re: Конвертирование кодировки Отправлено: dangreen от Июль 01, 2012, 07:38 поможет кто?
Название: Re: Конвертирование кодировки Отправлено: navrocky от Июль 01, 2012, 11:26 Похоже на UTF-16. Парси ручками строку и формируй результат. Встроенной функции скорее всего нет. Разве что в исходниках какого-нибудь Xml парсера в привате....
Название: Re: Конвертирование кодировки Отправлено: dangreen от Июль 01, 2012, 17:21 Похоже на UTF-16. Парси ручками строку и формируй результат. Встроенной функции скорее всего нет. Разве что в исходниках какого-нибудь Xml парсера в привате.... выделить то эти символы несложно как их сконвертировать? Название: Re: Конвертирование кодировки Отправлено: Kolobok от Июль 01, 2012, 17:52 QString QString::fromUcs4 ( const uint * unicode, int size = -1 ) [static]
QString QString::fromUtf16 ( const ushort * unicode, int size = -1 ) [static] Название: Re: Конвертирование кодировки Отправлено: dangreen от Июль 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 перекодировать ? Название: Re: Конвертирование кодировки Отправлено: kambala от Июль 01, 2012, 19:57 ручками трудно из строки числовые коды вытащить и засунуть в массив?
Название: Re: Конвертирование кодировки Отправлено: dangreen от Июль 01, 2012, 20:42 ручками трудно из строки числовые коды вытащить и засунуть в массив? и что дальше? можно по подробней пожалуста, еслиб я понимал все это то не спрашивал бы Название: Re: Конвертирование кодировки Отправлено: kambala от Июль 01, 2012, 21:48 а дальше – воспользоваться одним из методов, который предложил Kolobok.
находишь начало и конец куска с юникод-символами, дёргаешь оттуда числовые коды в виде строки, конвертируешь их через QString::toUShort(0, 16) и помещаешь в массив ushort[], получаешь строку из массива с помощью QString::fromUtf16(), вставляешь вместо юникода в свою строку (начало и конец мы знаем). повторять в цикле пока есть куски юникода. реализацию алгоритма оставляем нашим читателям в качестве домашнего задания :) Название: Re: Конвертирование кодировки Отправлено: dangreen от Июль 01, 2012, 22:20 а дальше – воспользоваться одним из методов, который предложил Kolobok. находишь начало и конец куска с юникод-символами, дёргаешь оттуда числовые коды в виде строки, конвертируешь их через QString::toUShort(0, 16) и помещаешь в массив ushort[], получаешь строку из массива с помощью QString::fromUtf16(), вставляешь вместо юникода в свою строку (начало и конец мы знаем). повторять в цикле пока есть куски юникода. реализацию алгоритма оставляем нашим читателям в качестве домашнего задания :) toUshort возвращает ushort а fromUtf16 в параметре const ushort* Название: Re: Конвертирование кодировки Отправлено: dangreen от Июль 01, 2012, 23:02 проблема оказалась мнимой... на сервер залезло эта злосчастная строка..
ну сразу тогда выкладываю класс для кодирования и декодирования JSON в QHash<QString,QVariant> Название: Re: Конвертирование кодировки [Решено + QtJSONKit] Отправлено: kambala от Июль 02, 2012, 00:37 а дальше – воспользоваться одним из методов, который предложил Kolobok. находишь начало и конец куска с юникод-символами, дёргаешь оттуда числовые коды в виде строки, конвертируешь их через QString::toUShort(0, 16) и помещаешь в массив ushort[], получаешь строку из массива с помощью QString::fromUtf16(), вставляешь вместо юникода в свою строку (начало и конец мы знаем). повторять в цикле пока есть куски юникода. реализацию алгоритма оставляем нашим читателям в качестве домашнего задания :) toUshort возвращает ushort а fromUtf16 в параметре const ushort* |