PHP уроки
ПРОСТО самая лучшая обучалка PHP!
  • Студия LPHPRU
  • Уроки PHP
  • Контакты
  • Помощь
Меню
  • PHP - с чего начать?
  • Уроки PHP
  • Функции PHP
  • Массивы
  • Denwer
  • MySQL
  • Информация
  • Dreamweaver уроки
  • JQuery уроки
  • Галерея
  • OpenCart
Календарь
Февраль (2023)
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
2728     
В продаже

  • Что нового?

    • Тест №2
    • Тест №1 для разработчиков
    • PHP 5.6 RC1
    • SQL. Как cкопировать данные одной колонки в другую, в той же таблице
    • GRUB изменить порядок загрузки OS в Linux
    • SSH - вход на сервер без ввода пароля
    • PhpMyAdmin - проблема с загрузкой большого файла на сервер
  • Комментарии

    • Hello
    • тут нечего не понятно
    • Может уже пора на WebStorm переходит...
    • Здравствуйте. 10 лет пользуюсь др...
    • Была такая проблема, решалась пе...
  • TOP-5

    • Метод POST (2945467 )
    • Привет, МИР! (910788 )
    • Метод GET (667156 )
    • Операторы (605670 )
    • Firefox уже запущен, но не отвечает... (352940 )

Кодировка

Главная» Array » Кодировка
PHP урок № 371
Первая операционная система Unix, появилась в 1969 году - это в некотором смысле прародитель всех OS.
Рис 1. Древо UNIX систем
Когда я приступил к подготовке материалов для этой статьи, я невольно спустился к истокам создания уникального изобретения человечества –компьютера!
Невозможно объяснить, почему та или иная кодировка по-разному отображает символы национального алфавита, пока не узнаешь историю и некоторые технические особенности работы самого его величества компьютера (немного пафоса здесь не помешает, я люблю этого «зверя»). И опять народная мудрость впереди планеты всей: « Всё гениальное просто, не правда ли?» Всего две цифры, ноль и единица, а какой скачок человечества.
И так двоичный код, что это?
Двоичный код
Разряды
Пожалуй, надо начать с рождения мира. Что такое разряд?
Разряд - есть место, отведённое цифре в числе.
1000 – число «тысяча» имеет четыре разряда: единица, ноль, ноль, ноль;
264 – число «двести шестьдесят четыре» имеет три разряда, то есть три места для трёх любых цифр. В данном случаи, на эти места (разряды) определены цифры 2, 6, и 4.
Но цифры не единственные знаки, которыми кодирует человечество. Алфавит, например, любой страны - есть национальный, буквенный код её языка. Алфавит является системой знаков, т.е система определённых кодов, из которых складывается письменность.
Один разряд может содержать одно значение. Это факт и неважно какое это значение- цифровое, либо буквенное. Главное, диапазон подставляемых значений, он и определяет систему счисления. Это очень важно понимать. Мы пользуемся в обычной жизни, десятичной системой счисления.
Почему она так называется «десятичная»? Потому что тот самый диапазон знаков, который мы подставляем в один разряд, равен десяти.
Разряд
Число 892, представленное как формула десятичной системы счисления
892 = 8 * 102 + 9 * 101 + 2 * 100
здесь степень -это порядковый номер разряда в числе, счёт разрядов начинается с нуля и отсчёт ведётся справа налево.
Листинг № Array - формула десятичной системы
<?php 
// Вычисляем формулу
$a = 8 * pow(10,2) + 9 * pow(10,1) + 2 * pow(10,0);
echo  
$a . ' = 8 * 10<sup>2</sup> + 9 * 10<sup>1</sup> + 2 * 10<sup>0</sup><br>';
?>
Двоичная система счисления, подставляет всего два разных знака в один разряд. Такими знаками являются две цифры: ноль и единица.
Двоичный код – это два знака на один разряд!
Двоичный разряд
Десятичный разряд
Есть, как вы знаете, шестнадцатеричная система счисления. Где к десяти цифрам прибавили ещё шесть латинских букв:
A B C D E F
Которые обозначают числа
10 11 12 13 14 15
соответственно. Это применяется в вебе для представления цвета (#1A1A1D)
Так вот, в двоичном коде пара разрядов -это уже четыре варианта представления.
Что это значит, смотрим ниже.
Два разряда двоичного кода
Меняя в каждом разряде цифру, мы сможем получить четыре разных числа
00 01 10 11
Двоичный код не равен двоичной системе счисления, понятно, что это разные понятия.
Двоичный код является основой двоичной системы счисления.
По теории египтолога Гари Эртона, инки изобрели двоичный код за 500 лет до первого компьютера. Узелковая письменность инков (кипу), использовала туже систему кодирования, только в трёхмерном измерении, т.е. в жизни. Узелок есть, узелка нет. Каждая верёвочка (бит) имела ещё и свой цвет. И было тех битов семь. Тем самым достигалось передача до 1536 знаков.
Тем самым мы подошли ещё к одному очень важному определению «БИТ».
Бит
Бит (bit - немного) – это единица измерения информации, причём однозначно определяющая присутствие информации в данный момент времени. Это тот самый разряд, имеющий всего два значения:
«Да» – соответствует цифре 1(единица)
«Нет» - соответствует цифре 0 (ноль)
Это глобально, вы только вдумайтесь, насколько просто и в то же время гениально это выглядит!
Что мы имеем, собрав четыре разряда или четыре бита линейно в строку?
Мы получим блок для представления всех десятичных цифр.
Десятичные цифры в двоичном представлении (4 бита).
Это и привело в конечном итоге к использованию именно 8 бит в одном байте, так как одно натуральное число требует не больше 4 бит. Если использовать 5 бит, то при хранении одной цифры остаётся лишний пустой бит. Не экономно используется место в памяти компьютера. А так как кроме цифр есть ещё и буквы, а двузначное число требует, как минимум 8 бит, то, как раз всё и сложилось.
Так что теперь единовременно, в один момент компьютером отправляется пучок из 8 бит, который равен 1 Байту.
Байт
Байт – единица информации, в современных компьютерах равна 8 Бит ( (28)= 256 вариантов кода). Применяется так же термин октет (от латинского octet ).
Понятно, что знаков, закодированных одним Байтом, может быть не более 256. Понятно так же, что не сразу 256 знаков отправляются, а в один момент в одном байте, может быть воспроизведён любой один знак из двухсот пятидесяти шести.
Байтовая адресация памяти была впервые применена в системе IBM System/360. В более ранних компьютерах адресовать можно было только целиком машинное слово, состоявшее из нескольких байтов.
Кодовая страница
К слову, компания IBM, год основания 1889, выпустила первый компьютер System/360, имеющий байтовую адресацию памяти в 1964 году. Он так же стал первым семейством компьютеров.
Корпорация IBM ввела термин page code (кодовая страница). Это 8-ми битная кодовая страница имела таблицу кодов одного языка. Эти страницы менялись в зависимости от надобности того или другого языка.
В наше время используются в основном два типа кодировок, совместимые с ASCII и EBCDIC. Преобладает тип кодировки ASCII.
ASCII
ASCII (аски) - американская стандартная кодировочная таблица для печатных символов и некоторых специальных кодов.
ASCII представляет собой кодировку для представления десятичных цифр, латинского и национального алфавитов, знаков препинания и управляющих символов.
Проще сказать это- шаблон. Для написания кодовых страниц национальных языков опираясь на кодовую страницу ASCII, т.е. видоизменяя её и подставляя вместо каких-то символов, написанных в ASCII буквы и знаки национального алфавита, мы получаем кодовую страницу национального языка как стандарт кодировки. При этом используется только часть таблицы, так как латинский алфавит остаётся неизменным.
Если в кодировке (кодовой странице) ASCII не используются символы национального языка, то она называется US- ASCII. При использовании 8-ми битной кодировки стало уместным делить таблицу на пополам и использовать для US- ASCII нижнюю часть таблицы от 0 до 127, а верхнюю часть (128-255) отдать под национальные алфавиты и знаки пунктуации.
Здесь и началась эпопея с «кракозябрами», так как отсутствие стандарта для написания букв кириллицы в кодировках, представляющих русский алфавит, привело к тому, что написанная страница с использованием кодовой страницы KOI8 напрочь не читабельна с использованием страницы Windows-1251.
Кодировка (кодовая страница) ASCII (аски)
KOI8
KOI8 - восьмибитовая ASCII-совместимая кодовая страница, разработанная для кодирования букв славянских алфавитов.
И т.д. на самом деле их много, целое семейство koi8. KOI8 кодировка, была утверждена официально 1990 году.
Кодировка KOI8-R русская
.0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
  8.   ─ 2500 │ 2502 ┌ 250C ┐ 2510 └ 2514 ┘ 2518 ├ 251C ┤ 2524 ┬ 252C ┴ 2534 ┼ 253C ▀ 2580 ▄ 2584 █ 2588 ▌ 258C ▐ 2590
  9.   ░ 2591 ▒ 2592 ▓ 2593 ⌠ 2320 ■ 25A0 ∙ 2219 √ 221A ≈ 2248 ≤ 2264 ≥ 2265   A0 ⌡ 2321 ° B0 І B2 • B7 ч F7
  A.   ═ 2550 ║ 2551 ╒ 2552 ё 451 ╓ 2553 ╔ 2554 ╕ 2555 ╖ 2556 ╗ 2557 ╘ 2558 ╙ 2559 ╚ 255A ╛ 255B ╜ 255C ╝ 255D ╞ 255E
  B.   ╟ 255F ╠ 2560 ╡ 2561 Ё 401 ╢ 2562 ╣ 2563 ╤ 2564 ╥ 2565 ╦ 2566 ╧ 2567 ╨ 2568 ╩ 2569 ╪ 256A ╫ 256B ╬ 256C © A9
  C.   ю 44E а 430 б 431 ц 446 д 434 е 435 ф 444 г 433 х 445 и 438 й 439 к 43A л 43B м 43C н 43D о 43E
  D.   п 43F я 44F р 440 с 441 т 442 у 443 ж 436 в 432 ь 44C ы 44B з 437 ш 448 э 44D щ 449 ч 447 ъ 44A
  E.   Ю 42E А 410 Б 411 Ц 426 Д 414 Е 415 Ф 424 Г 413 Х 425 И 418 Й 419 К 41A Л 41B М 41C Н 41D О 41E
  F.   П 41F Я 42F Р 420 С 421 Т 422 У 423 Ж 416 В 412 Ь 42C Ы 42B З 417 Ш 428 Э 42D Щ 429 Ч 427 Ъ 42A

Windows-1251 (синоним CP1251)
Windows-1251 – разработана компанией Microsoft на основе самописных руссификаторов для Windows.
Windows-1251 отличается от всех модификаций кодировок для кириллицы тем , что имеет практически все символы, не хватает только знака ударения.
Эта кодировка была введена для русских операционных систем семейства Windows по умолчанию. При этом большинство серверов в интернете работает на UNIX подобных OS. В которых используется кодировка KOI8, а для почтовых серверов вообще windows-1251 не используется.
Поэтому и приходится при отправки писем переводить Windows-1251 в KOI8-R,чтобы в почте не было «кракозёбров».
Windows-1251 русская кодировка. Числа под буквами обозначают 16-ричный код подходящего символа в Юникоде.
.0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
  8.   Ђ 402 Ѓ 403 ‚ 201A ѓ 453 „ 201E … 2026 † 2020 ‡ 2021 € 20AC ‰ 2030 Љ 409 ‹ 2039 Њ 40A Ќ 40C Ћ 40B Џ 40F
  9.   ђ 452 ‘ 2018 ’ 2019 “ 201C ” 201D • 2022 – 2013 — 2014   ™ 2122 љ 459 › 203A њ 45A ќ 45C ћ 45B џ 45F
  A.     A0 Ў 40E ў 45E Ј 408 ¤ A4 Ґ 490 ¦ A6 § A7 Ё 401 © A9 Є 404 « AB ¬ AC ­ AD ® AE Ї 407
  B.   ° B0 ± B1 І 406 і 456 ґ 491 µ B5 ¶ B6 • B7 ё 451 № 2116 є 454 » BB ј 458 Ѕ 405 ѕ 455 ї 457
  C.   А 410 Б 411 В 412 Г 413 Д 414 Е 415 Ж 416 З 417 И 418 Й 419 К 41A Л 41B М 41C Н 41D О 41E П 41F
  D.   Р 420 С 421 Т 422 У 423 Ф 424 Х 425 Ц 426 Ч 427 Ш 428 Щ 429 Ъ 42A Ы 42B Ь 42C Э 42D Ю 42E Я 42F
  E.   а 430 б 431 в 432 г 433 д 434 е 435 ж 436 з 437 и 438 й 439 к 43A л 43B м 43C н 43D о 43E п 43F
  F.   р 440 с 441 т 442 у 443 ф 444 х 445 ц 446 ч 447 ш 448 щ 449 ъ 44A ы 44B ь 44C э 44D ю 44E я 44F
Вывод: пользуйтесь unicode. Все символы в одном месте. Кодировка UTF-8
Статья написана отчасти по материалам «Википедии»
Array
  • lphp.ru © 2009-2023