Название: Конвертирование из unicode'а в utf8 Отправлено: LevLimin от Октябрь 27, 2006, 12:07 Я понимаю, что этот боян уже скоро порвут. Но...
Я в QT полный нуб. Юзаю эту библиотеку поскольку было указание свыше. И возникла необходимость конвертировать строку записанную в unicode, а точнее в utf16, и ещё точнее в ucs2 в utf8. Например строчка 'A,A,' - где первая а латинская, а вторая русская, кодируется в юникоде так: FEFF 0041 002C 0410 002C В utf8 41 2C D0 90 2C До недавнего времени я юзал примерно такую конструкцию // char* buff <-- хранит в себе саму строку для перекодирования QString encoded_string = QString::fromUcs2((const unsigned short *)buff); return qstrdup(encoded_string.utf8); И всё отлично работало. Но недавно мне сказали - мы хотим Qt версии 2.3, а там метода fromUcs2 нет. Пришлось увидеть класс QTextCodec. Но с ним как я ни бился, не могу получить тот же результат. Я ползал по разным хелпам и форумам, но толку ноль. Ткните меня таки мордой - как нужно заюзать QTextCodec что бы всё правильно сконвертилось. Я уже собираюсь с горя выдрать из исходников QString'а реализацию метода fromUcs2. Заранее спасибо ! Название: Конвертирование из unicode'а в utf8 Отправлено: Alex03 от Октябрь 27, 2006, 13:45 Если ничего в qt 2.3 не найдёте, то реализуйте сами, между utf8 и ucs2/ucs4 есть односначное преобразование.
Как один из вариантов поиска инфы, в линуксе: man utf-8 man unicode Да и исходников/либ думаю легко найдёте. (а то и из qt3/qt4 достанете) :) ИМХО из юникода в юникод легко преобразовывать. Ну а если платформозависимо делать, то используйте библиотеки ОС. добавлено спустя 5 минут: Дык в QString в qt2 случайно не в UCS2 лежат данные? FEFF - это типа спецсимвола, который про порядок байт в том числе говорит. Название: Конвертирование из unicode'а в utf8 Отправлено: LevLimin от Октябрь 27, 2006, 16:35 Цитата: "Alex03" Если ничего в qt 2.3 не найдёте, то реализуйте сами, между utf8 и ucs2/ucs4 есть односначное преобразование. Как один из вариантов поиска инфы, в линуксе: man utf-8 man unicode Да и исходников/либ думаю легко найдёте. (а то и из qt3/qt4 достанете) :) ИМХО из юникода в юникод легко преобразовывать. Ну а если платформозависимо делать, то используйте библиотеки ОС. добавлено спустя 5 минут: Дык в QString в qt2 случайно не в UCS2 лежат данные? FEFF - это типа спецсимвола, который про порядок байт в том числе говорит. Мне надо из Ucs2 в Utf8. Ручками написать перекодировку я могу, но хотелось бы цивилизованно. Наверняка QTextCodec это может, только я туплю. добавлено спустя 2 часа 46 минут: Так и пришлось ручками указывать классу QString, что в буфере хранятся байты изображающие из себя UCS2 строку. Это элементарно. Жаль что такого метода нет в QString для Qt 2.3 |