Старый 23.05.2016, 23:20   #1
Eternity
Администратор
 
Аватар для Eternity
 
Регистрация: 21.11.2014
Сообщений: 2,965
Сказал(а) спасибо: 12
Поблагодарили 86 раз(а) в 80 сообщениях
Настроение: Daring
Репутация: 107
По умолчанию Про кодировки и отображение страницы

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

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

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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы можете создавать новые темы
Вы можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Текущее время: 20:48. Часовой пояс GMT +3.

 
 
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios
Рейтинг@Mail.ru