При сохранении и воспроизведении на экране букв, цифр, знаков препинания и других текстовых элементов операционная система компьютера использует специальные таблицы. В них все эти символы размещены в строго определенном порядке. Когда вы сохраняете какой-либо документ, содержащий текст, то в файл записываются не сами буквы и цифры, а их порядковые номера в этой таблице. Когда же вы открываете такой документ, то происходит обратная операция - приложение читает из файла номера символов и выводит на странице соответствующие им знаки из таблицы. Эти таблицы называют «наборами символов» (Character Set, сокращенно CharSet) или «кодировками».
Таких таблиц существует довольно много - несколько десятков. Сначала каждый конкурирующий производитель компьютерного программного обеспечения создавал свою собственную таблицу символов, затем создавались таблицы для различных национальных алфавитов с обязательным включением английского, потом, по мере совершенствования операционных систем, создавались их варианты для новых возможностей и т.д. Если текст, записанный и сохраненный с использованием одной такой таблицы затем открыть с использованием другой, то результатом и будет то самое, что мы называем словом «крякозябры» - номера символов останутся прежними, но знаки им соответствующие в этой таблице будет совсем другими.
Указание кодировки, которую компьютерное приложение должно использовать для отображения текстового содержимого файла, записывается в служебное поле этого файла. Если текст передается по сетям, то указание кодировки отправляется в служебном поле передаваемого пакета информации. В HTML-коде веб страниц для хранения названия использованной кодировки предназначен специальный тег. В письме электронной почты кодировка передается в служебных полях вместе с информацией об отправителе, получателе и т.д. Если указание кодировки любым из перечисленных способов отсутствует, то с крякозябрами придется бороться вручную - попытайтесь подобрать нужную кодировку средствами используемого приложения. Такая функция предусмотрена и в браузере, и в почтовом клиенте, а текстовый редактор (например, Microsoft Word) сам пытается определить правильную кодировку по косвенным признакам.
Кажется, сегодня наконец-то создан стандарт таблицы символов, который удовлетворяет всех - его назвали «Юникод» (Unicode). Но переход на него еще только совершается, поэтому с крякозябрами придется сталкиваться еще несколько лет.