Название: корректное преобразование символа в системную кодировку Отправлено: kambala от Апрель 18, 2011, 19:34 Здравствуйте. Есть ли универсальный способ преобразовать символ в текущую кодировку системы зная его код?
Пример: надо преобразовать символ с кодом 0xFF (не юникод!). В win-1251 это будет символ 'я' (юникод 044F), а в MacRoman - 'ˇ' (юникод 02C7). Уже по-всякому крутил и QTextCodec, и toLocal8Bit() - и все не то, постоянно выдает мне только юникод 00FF (или вообще ничего). Понимаю, что можно сделать через #ifdef, но хотелось бы универсальный способ. З.Ы. ну и еще надо этот символ вывести через QDataStream. там постоянно мне выдает utf-8 его представление - C3BF. но тут можно обойтись и с помощью quint8(0xFF) :) Название: Re: корректное преобразование символа в системную кодировку Отправлено: SABROG от Апрель 18, 2011, 21:53 зная его код? Встречный вопрос. А ты можешь преобразовать символ в системную кодировку зная один из его кодов 0xFF 044F 02C7 C3BF , но не зная какой из кодов какой кодировке принадлежит? Название: Re: корректное преобразование символа в системную кодировку Отправлено: kambala от Апрель 18, 2011, 22:04 нет.
но я же хочу указать, что надо преобразовывать именно из локальной 8-битной, какой бы она там ни была. Название: Re: корректное преобразование символа в системную кодировку Отправлено: SABROG от Апрель 19, 2011, 07:58 нет. но я же хочу указать, что надо преобразовывать именно из локальной 8-битной, какой бы она там ни была. Цитировать Есть ли универсальный способ преобразовать символ в текущую кодировку системы зная его код? Т.е. из системной локальной кодировки одного компьютера в системную локальную кодировку другого? Название: Re: корректное преобразование символа в системную кодировку Отправлено: kambala от Апрель 19, 2011, 09:30 ну в принципе да.
может я немного непонятно сформулировал вопрос. известен код символа в локальной 8-битной кодировке (0xFF, т.е. последний), нужно получить его символическое представление (в win-1251 - 'я', в MacRoman - 'ˇ'). Название: Re: корректное преобразование символа в системную кодировку Отправлено: SABROG от Апрель 19, 2011, 12:04 символическое представление (в win-1251 - 'я', в MacRoman - 'ˇ'). Имеется ввиду изображение глифа символа? Т.е. для символа F0 маковской кодировки тебе нужно изображение яблока? Название: Re: корректное преобразование символа в системную кодировку Отправлено: kambala от Апрель 19, 2011, 12:14 да (а в 1251 F0 - это 'р').
вообще смысл в том, чтобы записать корректный символ в имя файла. Название: Re: корректное преобразование символа в системную кодировку Отправлено: kambala от Апрель 20, 2011, 10:33 провел пару тестов и выяснил интересную вещь: по умолчанию Qt выставляет Latin-1 (или UTF-8), а не системную кодировку :(
следующий код на винде и на маке дал абсолютно одинаковый результат: Код
Цитата: output locale: System 0xFF: 'ÿ'; cstr: fail 0xFF: 'ˇ'; cstr: Apple Roman 0xFF: 'я'; cstr: windows-1251 получается без if, QLocale и #ifdef не обойтись? вот нашел одну переписку, которая дает положительный ответ на предыдущий вопрос... http://lists.trolltech.com/qt-interest/2007-03/thread01152-1.html з.ы. про qDebug() знаю, но вспомнил о нем только сейчас :) |