Comments 33
Интересно, имея такой опыт, чем же вы теперь занимаетесь ?)
В те времена в ПЗУ видеокарты Geforce 2 MX я прошил русский шрифт, чтобы при необходимости что-то прочитать из под DOS, не надо было бы для этого запускать keyrus.
UTF-8, UTF-16, UTF-32 и EF BB BF смеются над прежним миропорядком
КОИ-8 изначально была почтовой кодировкой — потому что сервера были на юниксе.
В вебе её массово проталкивали пара-тройка основателей рунета, но, поскольку со стороны клиентов всё же популярна была 1251, то придумывали всяческие костыли, типа модулей к апачу для перекодировки на лету.
>Linux давно поддерживает Windows-1251, но я не видел, чтобы кто-нибудь использовал его
В доюникодные времена активно пользовался именно 1251. Меньше было вопросов с русскими именами файлов на фтп и самбе.
1251. Меньше было вопросов с русскими именами файлов на фтп и самбе.
Чтобы осознать предельную ложность этого утверждения, достаточно взглянуть на кодовую страницу 1251. Под кодом 0xFF (255) в ней прячется кирилличная "я". Это стало прямо притчей во язытцех не только при разработке ftp-серверов, но и, как видно по ссылке, при разработке клиентов для них. В koi8-r, например, этому коду соответствует заглавная "Ъ". История показала, что решение разработчиков koi8-r гораздо более удачное, нежели предложенное дуболомами из Microsoft, поскольку "Ъ" в русском языке встречается... никогда. Разве что на всяких "упячках". Самая безопасная в этом плане, кстати, как ни странно, была CP866, в которой 0xFF отображён на символ, в письме обычным пользователем не использующийся вообще никак (NBSP). В итоге именно под cp1251 было нагромождено безумное количество хаков, а не под koi8-r.
Но поставить соответствующий патчик для proftpd лично мне было гораздо проще, чем обучать юзеров конвертации имён файлов. А вот букву «я» в welcome.msg я так и не поборол, если память не изменяет…
И да — я лично про себя говорю. Хотя были несколько знакомых с 1251 на линуксе. Но массово всё же было кои8, не спорю. А уж фря на юникод ещё позже линуксов перешла.
Очевидно, я очень рад победе Unicode, потому что ни одна из этих проблем не существует в мире Unicode.
Юникод, конечно, штука крутая и он, конечно, решил заодно и все описанные проблемы, но, вообще-то, он не для этого создавался. У большинства людей, говорящих на других языках, большей части этих проблем не было. На самом деле, и до Юникода люди жили и не так уж плохо. Надо было просто: а) задать в ОС кодовую страницу своего языка (при том, что она изначально была правильно задана при использовании локализованной версии ОС), б) всё! Ограничение же было такое: нельзя было одновременно отображать/вводить символы, относящиеся к разным кодовым страницам. (Типа, писать письмо на французском и цитировать Гомера в оригинале). Собственно, эту проблему для всего остального мира Юникод и решил. Ну, плюс теперь у нас куча символов для эмодзи и даже вон Яндекс.Погода зачем-то вставляет зонтик в title страницы.
Что касается наших проблем. Вспомните IE6 и его контекстное меню выбора кодировки — именно кириллица радовала большим выпадающим подменю со всеми вариантами. Куча кодировок кириллицы возникла в результате… э-э… административных факторов. Что, на самом деле, довольно удивительно для страны, где физические
После того, как стало ясно, что ситуация с кодировками аховая, провайдеры бросились её исправлять. Сегодня трудно в это поверить, но тогда, в начале и середине 90-х, считалось нормальным для коммерческой компании объявлять крестовый поход против своих же пользователей под флагом абстрактной инженерной идеи. А именно: не смотря на то, что у большинства пользователей была винда (что же ещё?) с её CP1251, провайдеры принудительно перекодировали трафик в соответствии со своими представлениями о том, что такое хорошо и что такое плохо. Ну, разумеется, винды были суксь и маздай, а свои железяки они гоняли под никсами, поэтому всё перекодировалось в КОИ-8. (По просьбам трудящихся, так сказать). Больше всего страдала, конечно, почта. (Тогда понятие «Интернет» включало в себя не только «Веб», но и «Email» — в буквальном смысле, т.е. провайдеры в тарифных планах указывали: «1-2-3 почтовых ящика», это уже потом всякие mail.ru с веб-интерфейсами избавили юзеров от необходимости разбираться в мейлерах). Получить письмо и прочитать можно было только при очень большем везении. Но почтой эти вредители не ограничивались. Были известны случаи и когда провайдер перепаковывал архивы (юзеры ведь быстро приспособились паковать тексты писем — так вот, чтобы им жизнь мёдом не казалась), и когда провайдер перекодировал HTTP-трафик. В последнем случае было очень круто, когда веб-мастер задавал в атрибутах страницы свою кодировку (соответствующую дальнейшему тексту), а провайдер её перекодировал, не трогая мету. Ну и не забудем, что прохождение трафика — почты, аттачей, HTTP — через более, чем одного провайдера давало результат невероятной степени рандомности в соответствии с законами комбинаторики.
К счастью, ситуация вскоре (аккурат к концу 90-х) нормализовалась. Во-первых, почти все юзеры сами собой пришли к общему знаменателю (1251). Во-вторых, дикие провайдеры малость окультурились и перестали, пардон, гадить клиентам за их же деньги. И не смотря на отсутствие Юникода жизнь нормализовалась. Ах да, осталась третья проблема — низкий профессионализм местных разработчиков. Опять же, сейчас рассказать, какие нравы были — не поверят, но тем не менее. Считалось нормальным на машине разработчика в реестре перемапить дефолтную 1252 на 1251 (ну, чтобы в IDE не было необходимости правильно настраивать кодировку ресурсов и исходников), а потом отгрузить полученный дистрибутив счастливым пользователям. После чего единственный способ узреть вожделенную кириллицу у пользователя был… как вы понимаете, аналогично изнасиловать свой реестр. Я не шучу. Тем не менее, если человек пользовался продуктами, сделанными действительно профессиональными разработчиками (например, Microsoft), проблемы, наконец-то, сводились к общему минимуму: невозможности смешивать разные языки.
Короче говоря, Юникод у нас оказался, типа, как изобретение телепорта, избавившее от необходимости решать проблему дураков и дорог. Кстати, довольно редкий случай, если подумать — чисто инженерное решение помогло решить административные проблемы. Всё, как мы любим ;)
Надо было просто: а) задать в ОС кодовую страницу своего языка
ОСы были разные. Да и даже внутри одной ОС тоже были проблемы (866+1251).
Куча кодировок кириллицы возникла в результате… э-э… административных факторов.
Как нам говорил преподаватель в школе — «не могу сказать ничего хорошего про страну, где официальная кодировка символов называется „альтернативная модифицированная“.
Были известны случаи и когда провайдер перепаковывал архивы (юзеры ведь быстро приспособились паковать тексты писем — так вот, чтобы им жизнь мёдом не казалась), и когда провайдер перекодировал HTTP-трафик.
Почту да, перекодировали. Вот архивы и трафик — такого я не помню. Вебстраницы, бывало, перекодировались на стороне сервера — он по юзерагенту пытался понять, кто к нему зашел и отдавал страницу в соответствующей кодировке.
Почтовик нетскейповский мог почту лишний раз перекодировать, там у него в двух местах кодировку надо было ставить, чтобы он именно в кои8 отправлял, а не в двукратном кои8.
После чего единственный способ узреть вожделенную кириллицу у пользователя был… как вы понимаете, аналогично изнасиловать свой реестр. Я не шучу.
Адоб этим долго страдал. Всякая китайщина и японщина тоже отдельных танцев с бубном требовала. Ещё, кстати, можно вспомнить переход от ворда7 к ворду97, где появились юникодные шрифты и файлы стали резко толстеть.
Так что Юникод спас не только Россию от лишних кодировок, но и вообще весь неанглоязычный мир.
даже внутри одной ОС тоже были проблемы (866+1251).
Привет из 2021-го, тут в винде эта фигня до сих пор никуда не делась в cmd.exe. И вообще, в винде три кодировки. NTFS хранит имена файлов в UTF-16.
Если коротко, то где-то с 2006-го браузеры уже устойчиво и надежно показывали все читаемое, бо utf-8 стал стандартом для кодировки страниц. До того были постоянные игры в угадайку кодировки, даже несмотря на то, что в браузерах уже был автовыбор кодировки.
Сегодняшние начинающие айтишники достаточно сложно понимают, что за дела с кодировкой сайтов и почему это вообще проблема, о которой надо знать. Нет такой проблемы!
Одна из причин - сложная история Советского Союза и вычислительной техники - он был изолирован от остального мира, и все организации, производящие компьютерное оборудование и программное обеспечение, принадлежали государству, поэтому оно могло навязать им стандарты. После распада СССР рынок был быстро захвачен западным оборудованием и программным обеспечением потому что советскую технику уже никто не производил. Частные софтверные компании тоже сразу начали выпускать ПО для импортных ОС - сначала это был DOS.
Сложная история СССР тут точно ни при чем.
Исторически сложилось, что кодировок было, как собак нерезаных. Даже стандартов (например, EBCDIC, ANSI), в которых были собраны в великом множестве различные кодировки, было очень много (даже если не вспоминать всякую экзотику с числом бит на символ, меньшим восьми).
И проблема с кодировками возникала не только с кириллицей или с языками, пользующими экзотический алфавит (арабский, китайский, японский), но и с любым языком, не ограничивающимся стандартным латинским алфавитом (всякие умляуты, циркумфлексы и прочие прибамбасы к буквам, особенные буквы разных языков, не имеющие аналогов, вроде немецкой эсцет).
Были даже кодировки с расположением латиницы, отличающимся от ASCII, что доставляло "радости" и пользователям чистой латиницы.
Только доминирование DOS и WINDOWS более-менее (но все же не до конца) свело все это разнообразие для большинства языков к двум кодировкам на каждый язык (OEM и ANSI). И вот этот дуализм сильно портит жизнь даже сейчас, когда все прогрессивное человечество свалило на уникод.
Да даже с уникодом не все гладко. У одних UTF-16, а у других UTF-8. Бардак, одним словом, хотя и меньший, чем было в начале.
Эта кодировка, мягко говоря, безумна: она была спроектирована так, что удаление 8-го бита оставляет вам несколько читабельную ASCII-транслитерацию русского алфавита, поэтому русские буквы не идут в обычном порядке.
И это, внезапно, было не просто так. Это давало возможность использовать терминалы с семибитной кодировкой ASCII (в том числе и программные эмуляторы). Причем такие кодировки были не только для кириллицы.
Причем КОИ-8, похоже, умер только с приходом уникода. По крайней мере для некоторых дистрибутивов линукса именно он использовался для русского языка по умолчанию, пока на его место не пришел UTF-8.
Забавный факт: десктопная версия ВКонтакте до сих пор использует 1251
а сайт opennet.ru в koi8-r и живёт отлично :)
Вот по этому как только перелез с отечественной техники на буржуйскую, стал писать комменты только по-английски. Помню, как мы мучились, делая грузинскую кодовую страницу под Oracle - американцы, видимо, были уверены, что Грузия и Джоржия - одно и то же, и не добавили грузинского алфавита :-)
Одна из причин — сложная история Советского Союза и вычислительной техники — он был изолирован от остального мира, и все организации, производящие компьютерное оборудование и программное обеспечение, принадлежали государству, поэтому оно могло навязать им стандарты.
Вот не надо. Советское государство как раз и создало стандарт «Основная кодировка», он же международной ISO 8859-5. И вторую, альтернативную кодировку — ту самую CP-866 в DOS, адаптированную для использования символов псевдографики.
Проблема как раз в том, что разработчики НЕ следовали стандартам. Вот как принималось решение о введении кодировки для Windows в Microsoft:
─ SU.LAN (2:478/3.11) ───────────────────────────────────────────────── SU.LAN
From: Igor V. Semenyuk 2:50/128 13 Jan 96 00:53:00
To: All 14 Jan 96 15:23:54
Subj: Re: www.ru/crazyweb
───────────────────────────────────────────────────────────────────────────────
From: i...@sovam.com (Igor V. Semenyuk)
Reply-To: i...@sovam.com
X-RealName: Igor V. Semenyuk
Я тут написал сгоряча:
>… может все это происки дяди Билла…
А потом вспомнил одну историю и с ужасом подумал, может зря я
вместе с другими дядю Билла обижаю, может и не виноват он…
может кого поближе найти можно… может меня самого…
История такая. Сразу предупреждаю, что большинство деталей у
меня из головы выветрилось, за их точность я не ручаюсь, но основная
канва верная, и, думаю, непосредственные участники смогут подтвердить,
если пожелают.
Году так в 1991 (или это было в 1990?) Микрософт, серьезно озаботился
локализацией своих продуктов для советского рынка. Очевидно, встал вопрос
о кодировке. И вроде бы Микрософт запросил мнение российских
программистов о кодовой таблице. И вот, в один прекрасный день человек
15-20 собралось в старом здании Параграфа на Петровском бульваре,
чтобы выработать согласованное предложение для Микрософта. Hе могу
назвать всех участников, большинство я тогда не знал, вот те, которые
помню: Антон Чижов из Параграфа (он председательствовал), Петя Квитек
из Диалога (кстати, г-н Саух, Вы тогда работали в Диалоге, вполне
могли бы поучаствовать… но страшно далеки Вы были от Windows :-),
Женя Hестеренко (он, собственно, и притащил меня на эту встречу),
по-моему, был еще Игорь Баздырев (автор Паравина).
Консенсус был достигнут довольно быстро (по-моему, вся встреча длилась
часа 2). Я смутно припоминая, что доводы были примерно такие (только
не надо открывать дискуссию, это уже история, и тут ничего не изменишь):
— алфавит должен быть упорядочен (кроме буквы e:)
— сначала uppercase, потом lowercase
— колонки 80 и 90 — табу
— колонка A0 отпала из-за того, что A0 — non-breakable space — использовался во всех word processors
— не помню почему, но буква «A» должна была быть в строке 0
— тоже не помню, но разрывов не должно было быть
В результате, осталось всего 2 варианта — четыре колонки B0-EF
(кстати, ISO8859-5) и C0-FF.
По-моему, решающим доводом в пользу второго варианта было то, что
в Latin-1 (ISO8859-1) буквы с умлаутами были расположены в этих колонках.
Потом располагали e:E:, украинские и др. символы.
Потом, кажется, Hестеренко с Баздыревым поехали делать красивую
распечатку драфта.
Вот такая вот история. Конечно, вполне возможно, что выработанные
рекомендации до Микрософта не дошли, или были им проигнорированы.
Hо факт — русские буквы в cp1251 расположены именно так.
Может быть, дядю Билла стоит винить в том, что он пошел на
поводу у несознательных русских, которые сами не знали, что творят? :-)
Честно скажу, я тогда про ISO8859-5 не знал напрочь. Знал бы,
никогда бы за cp1261 выступать не стал бы. Hу, а у koi8 шансов
никаких не было, к сожалению, изначально.
То есть вместо того, чтобы взять советский ГОСТ, он же международный (ISO 8859-5) малограмотные кодеры посчитали себя самыми умными и решили выпендриться, придумав собственную быдлокодировку на коленке. Просто слов нет, одни маты только напрашиваются.
Похожим образом решили выпендриться UNIX'оиды в 90-х и начале нулевых, опять же вместо утвержденного стандарта взяв заведомо устаревшую КОИ, которую нет никакого смысла использовать даже на EGA мониторах (с перепрограммируемым знакогенератором) и тем более в графических режимах SVGA. Ну там хотя бы есть оправдание, что она удобна в нерусифицированном софте.
У нас могли бы быть 2 стандартные кодировки, вместо этого, блин, развели целый зоопарк.
Unicode норм, конечно..
Но до сих пор с кодировками настоящий ад например в мире sms, который всё не уйдет на покой. Там кроме как бы основных (ucs2, 8bit, 7bit) + сжатый_не_сжатый текст ещё до кучи национальных расширений 7и битной кодировки может быть...
А не было единственного общепризнанного стандарта. Стандартами были ДКОИ (он же EBCDIC), и КОИ-7, КОИ-8Р. ISO8859-5 предложили сербы, и для русской кириллицы вариант оказался не очень. Кириллица для разных языков использует различные наборы букв. Здесь не было злого умысла, просто единственного хорошего способа кодировать кириллицу так и не сложилось. С латиницей та же история. Стандартных 28 букв не хватает для большинства европейских языков. И есть наши братья сербы, которые вообще используют два различных алфавита.
Для тех, кто соскучился по крякозябрам, откройте текстовый файл формата UTF-8, в заголовке которого (файла) нет BOM-маркера (EF BB BF), в 1С Предприятии 8.3.
Добавлю в эту кучку стандартов кодировок, ещё модификацию КОИ-8Р для компьютеров стандарта MSX.
Жизнь до Unicode