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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Конвертирование из unicode'а в utf8  (Прочитано 4955 раз)
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.

Заранее спасибо !
Записан
Alex03
Гость
« Ответ #1 : Октябрь 27, 2006, 13:45 »

Если ничего в qt 2.3 не найдёте, то реализуйте сами, между utf8 и ucs2/ucs4 есть односначное преобразование.

Как один из вариантов поиска инфы, в линуксе:
man utf-8
man unicode

Да и исходников/либ думаю легко найдёте. (а то и из qt3/qt4 достанете) Улыбающийся

ИМХО из юникода в юникод легко преобразовывать.
Ну а если платформозависимо делать, то используйте библиотеки ОС.

добавлено спустя 5 минут:

 Дык в QString в qt2 случайно не в UCS2 лежат данные?

FEFF - это типа спецсимвола, который про порядок байт в том числе говорит.
Записан
LevLimin
Гость
« Ответ #2 : Октябрь 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
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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