Название: Сколько байт занимает 1 русский символ и какую использовать кодировку Отправлено: ___Cepera___ от Апреля 13, 2016, 10:52 Есть 16 байт в них помещается слово "Входной тракт". Преобразовывал строку toascii() toUtf8() и выходит 25 байт. С английскими буквами все нормально. Можно ли сделать чтобы русский символ весил 1 байт? Кодировку может нужно поменять или еще что то. Qt 4.8.7
Название: Re: Сколько байт занимает 1 русский символ и какую использовать кодировку Отправлено: Old от Апреля 13, 2016, 11:03 Есть 16 байт в них помещается слово "Входной тракт". Преобразовывал строку toascii() toUtf8() и выходит 25 байт. С английскими буквами все нормально. Можно ли сделать чтобы русский символ весил 1 байт? Кодировку может нужно поменять или еще что то. Qt 4.8.7 Конвертируйте не в utf-8, а в koi8r или cp866 (в любую 8-битную кодировку).Название: Re: Сколько байт занимает 1 русский символ и какую использовать кодировку Отправлено: ___Cepera___ от Апреля 13, 2016, 11:57 Tolocal8bit вроде как раз, но не помогает
Название: Re: Сколько байт занимает 1 русский символ и какую использовать кодировку Отправлено: Old от Апреля 13, 2016, 13:46 Tolocal8bit вроде как раз, но не помогает Смотрите QTextCodec.Название: Re: Сколько байт занимает 1 русский символ и какую использовать кодировку Отправлено: __Heaven__ от Апреля 13, 2016, 13:49 А ещё в изысканную cp1251 можно :)
Название: Re: Сколько байт занимает 1 русский символ и какую использовать кодировку Отправлено: lit-uriy от Апреля 18, 2016, 09:21 "вроде как раз, но не помогает", а ты размер чего измеряешь, байтов данных или объекта QByteArray?
Название: Re: Сколько байт занимает 1 русский символ и какую использовать кодировку Отправлено: ssoft от Апреля 18, 2016, 09:53 По вопросам применения кодеков почему-то всегда возникает много вопросов.
1) Сколько байт занимает русский символ. В зависимости от кодировки ответ разный. Например, "cp1251" - 1 байт, в "utf-8" - 2 байта (хотя латинский - 1 байт), и т.п. 2) Как работать с текстом и правильно преобразовать в набор байт. Существуют методы/конструкторы прямого взаимодействия QString и QByteArray - связываться с ними категорически не рекомендуется, так как результат зависит от глобально определенных параметров QTextCodec::setCodetFor...(могут быть вызваны в любое время и в любом месте) и в общем случае поведение может оказаться непредсказуемым. Вот пара примеров кода, часто приводящих к проблемам. Код: ... Для корректного взаимодействия необходимо всегда пользоваться кодеками QTextCodec Лучше взять за правило - хранить исходные файлы в кодировке utf8. Можно выбрать и любую другую, типа cp1251, но utf8 более универсальна, так как содержит не только русские буквы. Код: QString str = QString::fromUtf8( "Входной тракт" ); |