кирилица UTF 2 или 3 байта?!

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

RipperJack
Сообщения: 2

кирилица UTF 2 или 3 байта?!

Сообщение RipperJack »

Имеется следующая проблема.

Дистрибутив Fedora 10 Russian.

Кодировка UFT-8
Если в mcedit в графике набрать текст на русском языке, то каждый символ кодируется 2мя байтами.

Если тот же mcedit запустить из чистой консоли и там набрать текст на русском языке, то каждый символ кодируется 3мя байтами.

Соответственно весь русский текст набранный через консоль, не посмотреть в графике, не перекодировать iconv'ом и т.д.

Может кто-нибудь сталкивался с подобной проблемой?
Спасибо сказали:
Аватара пользователя
rm_
Сообщения: 3340
Статус: It's the GNU Age
ОС: Debian

Re: кирилица UTF 2 или 3 байта?!

Сообщение rm_ »

Сохранить два текстовых файла с примерами текста в той и в другой кодировке, выложить оба сюда.
Спасибо сказали:
Аватара пользователя
Frank
Сообщения: 1059
ОС: Ubuntu, Debian

Re: кирилица UTF 2 или 3 байта?!

Сообщение Frank »

UTF-8 — представление Юникода, обеспечивающее наилучшую совместимость со старыми системами, использовавшими 8-битные символы. Текст, состоящий только из символов с номером меньше 128, при записи в UTF-8 превращается в обычный текст ASCII. И наоборот, в тексте UTF-8 любой байт со значением меньше 128 изображает символ ASCII с тем же кодом. Остальные символы Юникода изображаются последовательностями длиной от 2 до 6 байтов (на деле, только до 4 байт, поскольку в Юникоде нет символов с кодом больше 10FFFF и вводить их в будущем не собираются)

Символы UTF-8 получаются из Unicode следующим образом
Unicode UTF-8
0x00000000 — 0x0000007F: 0xxxxxxx
0x00000080 — 0x000007FF: 110xxxxx 10xxxxxx
0x00000800 — 0x0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx
0x00010000 — 0x001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
Теоретически возможны, но не включены в стандарт также:
0x00200000 — 0x03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
0x04000000 — 0x7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

Несмотря на то, что UTF-8 позволяет указать один и тот же символ несколькими способами, только наиболее короткий из них правильный. Остальные формы должны отвергаться по соображениям безопасности.

Хотелось бы таки посмотреть, что там нагенерил ваш mcedit.
Изображение
Спасибо сказали: