1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

[Графомания] Кодировка с того света

Автор: Zelya · 10 фев 2017 · ·
  1. Удобно, знаете ли, открыть файлик, набранный на древнем-древнем компьютере и без танцев с бубном прочитать его содержимое. Я говорю не про Windows 98 и даже не про DOS, а про что-то еще более древнее и не совместимое с IBM PC. А ведь мы даже не задумываемся, что в реальности это чудо чудесное. И вот, прочитав один такой документик, я и решил написать сей небольшой опус.
    Помните историю в одной из предыдущих графоманий тыц1 тыц2 о злоключениях некоего профессора? Как и положено, история имеет счастливый конец, где на помощь ученому приходят мини-компьюетры и CP/M. Мною не были упомяты пять важных букв: ASCII. Да, эта древняя кодировка (еще из 60-х) тесно переплетается с CP/M, но в то же время абсолютно независима. Изначально она имела лишь 7-битное представление: латынские буквы, цифры, пунктуация, управляющие символы. Управляющие символы, что за ересь? Да-да, символы для управления кареткой принтера. Например, символ 0x08, аналог Backspace. Хотите набрать на принтере "ê": пишите коды: 0x65, 0x08, 0x5E. 0x65 - это обычная латынская "e", которая вылезет на принтере, при этом каретка передвинется на одну позицию вправо. 0x08 вернет ее назад, на уже напечатанную "e". А 0x5E - это "^" - шапочка, или по-научному, циркумфлекс, прости Господи, который напечатается поверх "e" и получится "ê". А кто сказал, что в 60-х был подход WYSIWYG (What You See Is What You Get)?
    Но что-то я отвлекся. Вобщем, кодировка была хороша, а немного позже стала еще лучше. 8-й бит, служивший для технической информации (в основном, сигналы ошибок) скоро перестал использоваться по историческому назначению, и кодировку расширили до 256-ти символов. Теперь в легкочитаемом формате (почти WYSIWYG) вы могли видеть и шапочки над буквами, и всякие умлауты, и математическую хрень (да кому нужен символ под одну четвертую?!), но главное - песвдографику! Набор черточек и блочков позволявший круто оформить текст в таблицу или даже нарисовать картинку. Но все равно, считалось, что первые 128 символов - стандарт, а следующие - это опциональное расширение, например для локализаций.
    Локализация... Как много в этом слове для сердца русского слилось. Но началось все не с "Фаргуса", и даже не с Taralej & JaboCrack. Берите выше - АН СССР. DOS в 80-х годах, хоть и был нам не положен (гуглите CoCom), но все же покорил советские просторы. Нужно было его обязательно русЕфицировать, для чего отводились расширенные 128 символов. В АН подошли к процессу творчески, и создали аж две русификации: основную и альтернативную кодировки (а еще была одна забытая от МС: CP855). Вобще, я просто-таки требую прочтения этой незабвенной статьи, пока сайт еще не грохнули: 15 years of Russian MS-DOS 4.01. Но вернемся к нашей истории. Чем же отличались основная и альтернативная кодировка. В основной, все кириличные буквы шли в ряд, согласно алфавиту. Просто идиллия для программитса: и перебрать все в одном цикле легко, и определить символ-букву за одно сравнение, и т.д. Но одна мелочь мозолила глаза: символы псевдографики пришлось подвинуть. Стало быть, все таблицы из зарубежных документов "поедут". Ну и шут с ними, с таблицами, но все же, если очень приспичит, то можно загрузить альтернативную кодировку, где псведографика - на месте, но между "п" и "р" есть разрыв. Так думали в АН, но реальность оказалась обратной. Не, ну дейстивтельно, вы хотели бы работать в любимом Нортоне как-то так:
    Untitled.png
    (В реальности - это Волков под КОИ8, но повертье, Нортон под "основной" будет еще более удручающим)
    То-то же. Когда МС решили официально русифицировать DOS 4.01, был проведен опрос с интересными результатами: альтернативной кодировкой пользовались 85%, основной - 7%. Как-то неправильно кодировки названы, не? Вобщем, альтернативная кодировка, за особенные успехи в поддержании совместимости, была удостоена своей кодовой страницы от МС: CP866, и кучи наследников для других языков ex-USSR.
    Но в двери уже стукал 90-й год, с Windows 3.0 и необходимостью как-то улучшить процесс локализации. 256 символов, конечно, хорошо, но мало. Пойдем самым простым путем, добавим еще один байт, и получим 65 тыс символов, вот раздолье-то. И обзавем это все Unicode. Сказано - сделано. Но вот беда, разработчики из консорциума прошлись по тем же граблям, что и их коллеги из АН СССР. А ведь еще Маяковский говорил: "на совместимость шуток не скаль", ну или я что-то перепутал, не важно. Вобщем, такой милый сердцу документик из 80-х больше не читался в обычном Unicode-редакторе. Да и Unicode документик тоже не особо читался по нажатию F3 в Нортоне. Пришлось лепить костыль. Предыдущую версию обозвали UTF-16, а в альтернативу ему создали UTF-8. Всем хорош для программиста был UTF-16: строго два байта на символ (это уже потом его "доработали"). Легко и текст выводить, и позицию символа опередлить, и код символа по позиции: не жизнь, а малина. А тут родилась, эта "отрыжка", UTF-8, которая кодирует то одним байтом, то двумя, то тремя, а то и четырмя (а теперь уже и шестью). Вот попробуй найти в потоке байтов нужное место, чтобы поредактировать, скажем 100-й символ! пока первые 100 не распознаешь - хрен найдешь! Ужас ужасный. Одно лишь преимущество: 128 первых символов из древнего ASCII совпадают. А теперь внимание, вопрос! Как Вы думаете сколько процентов пользователей используют UTF-8 и сколько UTF-16 и его идейное продолжение, UTF-32? Вот то-то. И как бы не плакались ленивые программисты, мол из-за теневого правительства Земли выживают только самые неудобные решения, но пользователя не обманешь. Пользователь, он сердцем видит. Хотя, иногда даже не понимает, насколько ему повезло.
    Вот и я сижу сейчас за документиком, которому уже далеко за 30 лет, и читаю его в Notepad-е. Разве не чудо?

    UPDATE

    Еще одна довольно веселая история случилась в СССР, еще до массового распространения DOS и 8-мибитного ASCII. Вопрос стоял о руссификации 7-мибитной кодировки, что было гараздо труднее. Тут уже приходлось жертвовать не только порядком букв, и даже не псевдографикой, а латиницей. Чтобы хоть как-то сохранить читаемость зарубежных текстов, было придумано остроумное решение: ставить символы не в порядке русского алфавита, а подбирая букву-аналог латинской. Почти что транслитерация. Получилось настолько мило, что даже Лурк не обошел эту тему стороной: Инжалид дежице. Ну, зато "error", читался как "еррор"; "disk", как "диск", классно ж!
    Dimouse, SAS и warr11r нравится это.

Комментарии

  1. Zelya
    И про то, сколько памяти, и про то, что раньше безнаказанно можно было кастить char в byte и наоборот. Сейчас многие языки пробуют это спрятать от программиста, но не всегда получается, мы настойчивые.

    Нет, она уныла. А вот КОИ-7 - чудо. Даже апдейт написал в пост.

    Абсолютно глупая ремарка. Но если у Вас есть аргументы, я готов их выслушать.

    Ну, я тоже могу только предположить. Но аргументы @hobot, весьма толковы:
    1. Обязательный UTF8 для сервака, что некоторым может быть "в западло". Плюс на серваке еще может использоватся сторонний софт, который не дружит с UTF8.
    2. Разные реализации изображений.
    Ну и еще, ко всему прочему:
    3. Легкая кастомизация и расширяемость картинок админом сайта
    4. Плюс многий софт забивает на правильную обработку символов, за пределеами базовой языковой плоскости.
      hobot нравится это.
Чтобы оставить комментарий просто зарегистрируйтесь и станьте участником!
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление