Имеется следующая проблема.
Дистрибутив Fedora 10 Russian.
Кодировка UFT-8
Если в mcedit в графике набрать текст на русском языке, то каждый символ кодируется 2мя байтами.
Если тот же mcedit запустить из чистой консоли и там набрать текст на русском языке, то каждый символ кодируется 3мя байтами.
Соответственно весь русский текст набранный через консоль, не посмотреть в графике, не перекодировать iconv'ом и т.д.
Может кто-нибудь сталкивался с подобной проблемой?
кирилица UTF 2 или 3 байта?!
Модераторы: SLEDopit, Модераторы разделов
-
rm_
- Сообщения: 3340
- Статус: It's the GNU Age
- ОС: Debian
Re: кирилица UTF 2 или 3 байта?!
Сохранить два текстовых файла с примерами текста в той и в другой кодировке, выложить оба сюда.
-
Frank
- Сообщения: 1059
- ОС: Ubuntu, Debian
Re: кирилица UTF 2 или 3 байта?!
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.
Символы 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.
