Инструменты пользователя

Инструменты сайта


kodirovka

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

kodirovka [2018/12/07 16:29] (текущий)
Строка 1: Строка 1:
 +====== Виды кодировок символов ​ ======
 +{{htmlmetatags>​
 +metatag-description=(Кодировка или **кодовая таблица** — это однозначное соответствие между целым числом и некоторым символов.)
 +}}
 +
 +  * [[Unicode]]:​ UTF-8, UTF-16,​UTF-32.
 +  * [[i18n]] - Интернационализация
 +  * [[L10n]] - Локализация
 +
 +В общем случае кодировка или **кодовая таблица** — это однозначное соответствие между подмножеством целых чисел (как правило,​ идущих подряд) и некоторым набором символов. Ключевым здесь является понятие символа. Символ может быть буквой (а может и не быть), может соответствовать звуку речи (а может и не соответствовать) и может быть представлен графическим знаком (но может обходиться и без какого бы то ни было видимого образа). Символ — это атом смысла,​ мельчайшая неделимая частица информации. ​
 +
 +Так, латинское «А» и кириллическое «А» — это разные символы,​ потому что они употребляются в разных контекстах и несут в себе разную информацию. ​
 +
 +Определяющим для любой кодировки является количество охватываемых ею кодов и, соответственно,​ символов. Поскольку тексты в компьютере хранятся в виде последовательности байтов,​ большинство кодировок естественным образом распадаются на однобайтовые,​ или восьмибитные,​ способные закодировать не больше 256 символов,​ и двухбайтовые,​ или шестнадцатибитные,​ чья емкость может достигать 65636 знакомест. ​
 +====== Однобайтовые кодировки ======
 +  * [[ASCII]] - прежде чем переходить к восьмибитным кодировкам,​ нужно сказать несколько слов о кодировке под названием ASCII (American Standard Code for Information Interchange) — кодировке также восьмибитной,​ но охватывающей только 128 символов и потому довольствующейся семью значимыми битами (старший,​ восьмой бит при этом всегда равен нулю). Важность этой кодировки,​ включающей латинский алфавит,​ цифры и основные знаки пунктуации,​ необычайно велика:​ почти все остальные (большие по размеру) кодировки совместимы с ней, т. е. размещают на своих первых 128 знакоместах те же самые символы в том же порядке. ​
 +  * **КОИ8**. Хронологически одним из первых стандартов кодирования русских букв на компьютерах был КОИ8 («Код обмена информацией,​ 8-битный»). Эта кодировка применялась еще в доисторические советские времена на компьютерах ЕС ЭВМ, и когда в середине 80-х появились первые русифицированные версии операционной системы UNIX, они унаследовали эту кодировку у своих «предков». В результате КОИ8 является сейчас одной из кодировок,​ которые обязательно должна поддерживать любая русская web-страница. ​
 +  * **Windows-1251**. Вторая по значению в русском Интернете (и, безусловно,​ первая по употребимости на персональных компьютерах) кодировка — это стандартная кириллическая кодировка Microsoft Windows, обозначаемая аббревиатурой СР1251 («СР» расшифровывается как «Code Page», «кодовая страница»). Все Windows- приложения,​ работающие с русским языком,​ обязаны понимать эту кодировку без перевода. Благодаря распространенности Windows кодировка СР1251, вместе с КОИ8, входит в абсолютный минимум кодировок,​ которые приходится поддерживать русскоязычным сайтам. ​
 +  * Семейство 8859. **Latin-1**. Похожая ситуация с конкурирующими платформами и операционными системами и, как следствие,​ с конкурирующими несовместимыми кодировками наблюдается и в других языках,​ пользующихся своим собственным алфавитом или даже латинским алфавитом с расширениями. Международная организация по стандартизации (International Standards Organization,​ [[ISO]]) попыталась навести порядок в восьмибитных кодировках,​ создав серию кодировок ISO 8859, расширяющих таблицу ASCII для латинских букв с диакритикой и лигатур (кодировка ISO 8859-1), кириллицы (ISO 8859-5), арабского (ISO 8859-6), греческого (ISO 8859-7), и других алфавитов. ​
 +
 +Если кодировка ISO 8859-5 для кириллицы так и не прижилась,​ первая из этой серии — кодировка ISO 8859-1, известная также под именем Latin-1, — сумела стать общепринятым стандартом для кодирования «расширенной» латиницы. В эту кодировку включены почти все символы,​ употребляющиеся в письменностях западноевропейских языков — французского,​ немецкого,​ испанского и т.д. ​
 +
 +<​note>​Внедрение Юникода привело к изменению подхода к традиционным 8-битным кодировкам. Если раньше кодировка задавалась шрифтом,​ то теперь она задаётся таблицей соответствия между данной кодировкой и Юникодом. Фактически 8-битные кодировки превратились в форму представления некоторого подмножества Юникода. Это намного упростило создание программ,​ которые должны работать с множеством разных кодировок:​ теперь,​ чтобы добавить поддержку ещё одной кодировки,​ надо всего лишь добавить ещё одну таблицу перекодировки в Юникод.</​note>​
 +====== Многобайтные кодировки ======
 +  * [[Unicode]]
 +В 1991 году была предпринята попытка создать единую универсальную двухбайтовую кодировку,​ охватывающую все алфавиты и иероглифические системы мира. Результатом стал стандарт под названием [[Unicode]],​ покрывающий не только системы письменности всех живых и большинства мертвых языков мира, но и множество музыкальных,​ математических,​ химических и прочих символов. Массовое применение [[Unicode]] в документах и программах остается делом будущего,​ для web- дизайнера эта кодировка имеет особое значение,​ так как именно она объявлена «стандартной кодировкой документа» в HTML начиная с версии 4.
 +
 +В ближайшее время все более важную роль будет играть особый формат Unicode (и ISO 10646) под названием **UTF-8**. Эта «производная» кодировка пользуется для записи символов цепочками байтов различной длины (от одного до шести),​ которые с помощью несложного алгоритма преобразуются в Unicode- коды, причем более употребительным символам соответствуют более короткие цепочки. Главное достоинство этого формата — совместимость с ASCII не только по значениям кодов, но и по количеству бит на символ,​ так как для кодирования любого из первых 128 символов в UTF-8 достаточно одного байта (хотя, например,​ для букв кириллицы нужно уже по два байта).
 +====== Указание кодировки документа web-страницы ======
 +Для указания кодировки символов web-страницы используются следующие обозначения кодовых таблиц: ​
 +
 +  * windows-1251 - кириллица Windows
 +  * KOI8-R - [[кодировка]] КОИ8 для русского языка
 +  * KOI8-U - кодировка КОИ8 для украинского языка
 +  * ISO 8859-1 - кодировка Latin-1
 +  * ISO 8859-5 - кодировка семейства ISO 8859 для символов кирилицы
 +  * UTF-8 - [[Unicode]] - стандарт для [[HTML5|HTML]]
 +
 +На web- странице указать кодировку документа можно двумя cпособами: ​
 +
 +  * XML декларация:​ <?xml version="​1.0"​ encoding="​windows-1251"?> ​
 +  * Элемент meta: <meta http-equiv="​content-type"​ content="​text/​html;​ charset=windows-1251"​ /> 
 +Элемент meta является дочерним по отношению к разделу заголовка документа (head) и служит для указания типа и кодировки содержимого страницы. Типом содержимого является структурированный текст в формате html (text/​html),​ используемая кодировка кириллица windows (charset=windows-1251). ​
 +
 +Обычно используют оба способа одновременно. Например,​ для указания кодировки КОИ8 для украинского языка на web-странице,​ используют следующую структуру документа: ​
 +<​file>​
 +<?xml version="​1.0"​ encoding="​KOI8-U"?>​
 +<​!DOCTYPE html PUBLIC ... >
 +<html xmlns="​http://​www.w3.org/​1999/​xhtml">​
 +    <​head>​
 +        <​title>​Моя перша сторiнка</​title>​
 +        <meta http-equiv="​Content-Type"​
 +              content="​text/​html;​ charset=KOI8-U"​ />
 +    </​head>​
 +    ...
 +</​html>​
 +</​file>​
 +
 +<note important>​При сохранении текста выбирайте ту же кодировку,​ что указали на web-странице.</​note>​
 +Поэкспериментируйте с различными кодировками,​ и вы убедитесь,​ что символы латинского алфавита,​ цифры и знаки пунктуации передаются без изменений в подавляющем большинстве из них.
  
загрузка...
kodirovka.txt · Последние изменения: 2018/12/07 16:29 (внешнее изменение)