К вопросу о кодировках

Ночная странница

Пользователь
Регистрация
30.01.12
Сообщения
1.751
Реакции
965
Баллы
28
Возраст
47
Прелюдия


- А вот что ты сделаешь, если к тебе подойдёт человек, и спросит «Парле ву франсе»?
- Съезжу ему по физиономии. Ну, если он не белый, конечно же. Позволю я негру так себя обзывать!
(Приключения Гекльберри Финна)​

- Ирина Всеволодовна, у меня дискетка не вставляется!
- Ирина Всеволодовна, а где клавиша Enter?
- Ирина Всеволодовна, а у меня козявки на экране...

Практика показывает, что в учителя попадают две категории людей. Те, кто любит и знает своё дело, и те, кто ничего не знает, и знать не желает. Милая Ирина Всеволодовна, добрейшая женщина, всей душой любившая детей и люто ненавидевшая компьютеры, относилась ко второй. Выдернутая из гнезда «мышка», защёлкнутая на дискете кнопка «защиты от записи», или старая добрая шутка «твоя клавиатура лежит на моей парте, а моя - на твоей» - приводили славную женщину в такой ступор, что дождаться внятного ответа на вопрос становилось нереально. Оттого и сидел ваш покорный слуга в задумчивости и некоторой печали, наблюдая все многообразие греческого алфавита в исполнении такого красивого, цветного, но, увы, кем-то локализованного Norton Commander′а. Дискеты для урока информатики Ирина Всеволодовна собирала по всей школе, проверить их содержимое была не в состоянии, что и приводило к забавным последствиям
Итак - вам тринадцать лет, школьную информатику вы уныло просидели в классе с невообразимыми сейчас отечественными компьютерами УК-НЦ, и не видели ничего кроме «Бейсика», сделанного в славном городе Вильнюсе, зато чётко знаете, что на клавиатуре есть клавиша «Рус/Лат», призванная решить все ваши проблемы. И вот он - девятый класс, вот они - могучие 286е компьютеры с дискетой на мегабайт с лишним, и необъятное поле для экспериментов под названием MS-DOS. Не сразу, очень не сразу, и никаким образом не благодаря любимой учительнице, наш класс постиг истину о том, что есть шрифт, что русских буковок в нём может и не быть, а для того чтобы оные были - нужно потрудиться. Невелик труд - знать, что в файле AUTOEXEC.BAT прописаны команды, которые DOS выполнит сразу по загрузке, и что программа, которая заменит «европейский» шрифт в памяти компьютера на русский, называется KEYRUS.EXE. Ну, или RK.COM - на ваш вкус. Объяснить ученикам, что такое шрифт, что такое KEYRUS, почему без него русские надписи у Norton Commander выглядят жутко и пугающе - сей тяжкий труд был Ирине Всеволодовне не по силам. Впрочем, после ковыряния в книжках и расспросов старшеклассников дао keyrus.exe и rk.com на несколько лет стало для нас шаблоном, разрыв которого также был жесток.

Этап следующий - вам девятнадцать лет, вы третьекурсник технического ВУЗа, знаете всё, умеете всё, ни в чём не сомневаетесь, и чётко знаете, какова картина мира. Как страшный сон, забыли вы УК-НЦ и Ирину Всеволодовну, в обмен на зачёт автоматом пишете на Турбо-Паскале десятки интерактивных уроков для преподавателей по неинтересным предметам, очень собой горды, и понятия не имеете, что в лаборантской каморке кафедры электроники вас ждёт чудовище по имени «Искра-1030». Но вот лаборантская открывается перед вами, и шаблон «у IBM совместимых компьютеров клавиши Рус/Лат нет и быть не может» разлетается вдребезги. Вот оно - это чудовище. С ядовито-зелёным монитором, от которого глаза слезятся через пять минут, а через десять - слепнут. Вот он - компьютер, на котором есть и DOS, и Norton Commander, и даже Турбо Паскаль, но...

Ещё немного истории

- У килрати «траткхар» означает «мастер
языков». Он отвечает за общение корабля
с внешним миром, и это не должность, а воинское звание.
- Странный народ ...
- Просто они не люди.
(Wing Commander)​

Представьте себе, что на дворе год этак 1960, и вы изобретаете компьютер. Есть у вас замечательная «двоичная система исчисления». Горит лампочка, не горит лампочка, есть ток, нет тока, есть дырочка в перфоленте или перфокарте - нет дырочки в перфоленте или перфокарте. И ничего иного, кроме «есть» или «нет», «единицы» или «нуля» - в вашем распоряжении нет и не предвидится. Вам надо как-то скармливать информацию могучему электронному мозгу, а он не понимает ничего кроме нулей и единиц. Вот ведь задачка, а?
Можно конечно пойти очень простым путём. Пусть у нас одна дырочка в перфокарте - это буква «а», две дырочки - это буква «b», три - это «с»... Очень просто понять, идеально даже для кухарки, жаждущей управлять государством, но ... Сколько дырочек в перфокарте займёт простая фраза «мама мыла раму»? По этой ли причине, по другой ли, но «позиционная» система кодирования информации не пошла дальше страниц учебников по теории электроники.
Представьте себе, что вам нужно записать какое-то число. Что вы делаете? Смотрите, сколько в нём единиц, десятков, сотен ... И пишете арабскими цифрами и единицы, и десятки, и сотни ... И вам не нужно выбивать клином на каменной стене миллион палочек, чтобы изобразить это число.
А теперь отбираем у человека вторую руку, и вместо десяти пальцев у него остаётся пять. Откручиваем время на тысячи лет назад, и что мы видим? Числа «десять» человечество не изобрело. Числу «десять» просто неоткуда взяться, а человек записывает число так: единицы, пятёрки, «двадцатьпятёрки», «стодвадцатьпятёрки» ... И в результате получается число, которое пусть и занимает больше места, чем в десятичной записи, но всё равно «миллион» записывается достаточно компактно и понятно.
Наш следующий шаг - варварски оставляем считающему всего один палец. Что же? Ему считать миллион миллионом палочек? Отнюдь нет. Он разберёт число на единицы, двойки, четвёрки, восьмёрки ... И число, записанное в двоичной системе, выглядит аккуратно и понятно: 00000001 - это «один», 00000010 - это «два», 00000011 - это «три» ... Так ведь наш компьютер и есть такой человек с одним пальцем, это он всё воспринимает через нолики и единицы, это ему мы будем выдавать перфокарты с сорока строками по восемь столбцов, и каждый столбец будет у нас одной буквой или цифрой, которую мы хотим передать компьютеру!
И вот время идёт, мир постепенно привыкает к компьютерам, к тому, что двоичное число 00100000 (в десятичном значении 32) означает для компьютера «пробел», что латинская буква «а» имеет код 97, «b» - 98, значения кодов от нуля до 127 чётко расписаны, и с этим полностью согласен весь мир. Но ведь не английским же единым жив земной шар, есть множество разных языков с множеством разных алфавитов, и в их числе - русский. А в байте есть ещё вторая половинка - значения от 128 до 256, так отчего же не отправить русский алфавит туда? И вот, кто в лес, кто по дрова, начинается изобретение кириллической кодировки. Кто-то решает, что «QWERTY» на клавиатуре нужно превратить в «ЯВЕРТЫ», и именно в таком порядке забивать кириллицу в кодовую таблицу. Кто-то согласен, что порядок «АБВГД» совершенно естественен, но лучше сначала пустить рамочки, скобочки и крестики псевдографики, а уж потом вставить кириллицу, кто-то с этим совершенно несогласен, что и приводит к ситуации со старой и не очень доброй «Искрой-1030». Она знает, что есть кириллица, она рада оную кириллицу отобразить, и так же чётко она знает, что единственно возможное расположение кириллицы в кодовой таблице - это «ЯВЕРТЫ». А тут приходит какой-то студент, клепающий свои поделки на IBM XT, где совершенно естественно кириллица расположена в соответствии с 866 кодовой страницей IBM, и что должна делать бедная «Искра»? Конечно же, отображать мешанину вместо текста расчётов, и кто посмеет её обвинить?

К сути вопроса

Вернемся, наконец, в двадцать первый век, и посмотрим на страдающего пользователя, который только что видел перед собой вполне таки русскоязычную ссылку, показанную яндексом или гуглем, «замышил» её - и получил дикий набор вопросиков, квадратиков, иероглифов и чего угодно, только не вожделенной статьи, которую так жаждал прочесть. Паниковать не будем, а пойдём и посмотрим, какую кодировку нам сейчас отображает интернет-браузер. Дело это несложное, у каждого браузера делается по-своему, но суть - одна. У Мозиллы, например - это пункт меню «Вид», потом «Кодировка», а уж потом - список кодировок по категориям. Посмотрели на свою? Не трогайте пока ничего, не меняйте. Теперь посмотрим на «внутренности» той страницы, что так нас расстроила. Это тоже дело двух щелчков мышкой. Один - правой кнопкой, чтобы вызвать выпадающее меню, второй - на пункте «Исходный код страницы». С немалой вероятностью в коде страницы будут тэги «meta», и среди этих meta-тэгов скорее всего, найдётся тот, у которого задан параметр charset. И вот, если у нашего браузера в пункте «Кодировка» стоит «Кириллица, Windows 1251», а в коде страницы указано charset=UTF-8, то чем наша ситуация отличается «Искры», которой подсунули текст, набранный на XT? Комбинаций несовпадения кодировок может быть море - посмотрите, сколько вариантов кириллицы есть у вашего браузера, посмотрите, сколько вообще кодировок есть у него «в закромах».
Самые большие проблемы с отображением кириллицы нам создают сервера баз данных, которые принадлежат не нам, управляются не нами, даны нам только в аренду без реального доступа «к рулю». У базы данных (а чем она хуже прочих?) кодировка тоже есть, и частенько она совпадает с базовой кодировкой SQL сервера, и там может быть просто что угодно. SQL сервер не виноват, база данных не виновата, движок сайта не виноват, но ответственность всё равно с нас никто не снимает. Скорее всего, ваша база данных живёт на MySQL сервере. Он бесплатен, он любим многими сисадминами, он достаточно прост и очень распространён. Поэтому «рыба» движка сайта, из которой вы делаете своё творение - с немалой вероятностью держит свои данные в MySQL. И если ваш сайт живёт в utf-8, а гордый сисадмин, управляющий сервером, где живёт ваша база данных, уверен, что на свете есть только Линукс, и только кодировка KOI8-R - мы снова и снова оказываемся у той же самой «Искры» с теми же самыми крокозябрами на мониторе.
Но это - тема для отдельной статьи…

В.Р.
 

Вложения

  • kodirovki.jpg
    kodirovki.jpg
    76.1 KB · Просмотры: 2
Последнее редактирование модератором:

Ночная странница

Пользователь
Регистрация
30.01.12
Сообщения
1.751
Реакции
965
Баллы
28
Возраст
47
Veter, мне самой нравится :) Это статья моего друга - копирайтера, написанная по моей просьбе специально для lumtu.com
 

Wmboard

Пользователь
Регистрация
01.01.70
Сообщения
9.274
Реакции
2.665
Баллы
28
Адрес
На wmboard
Ночная странница, спасибо и вам и вашему другу. Читается на одном дыхании даже человеку весьма далекому от кодировок :)
 

Статистика форума

Темы
200.635
Сообщения
380.523
Пользователи
327.876
Новый пользователь
pm1199
Сверху Снизу