В началоИспользование UTF-8 в Gentoo → Кодировки
Gentoo-doc HOME Пред.: Использование UTF-8 в GentooВ началоУровень выше: Использование UTF-8 в GentooСлед.: Включение UTF-8 в Gentoo Linux

2. Кодировки

2.1. Что такое кодировка?

Компьютеры неспособны воспринимать текст. Вместо этого они каждый символ представляют как число. Традиционно каждый набор чисел, соответствующий алфавиту и символам (известный как кодировка или набор символов), ограничен в размере в силу ограничений оборудования.

2.2. История кодировок символов

Самой распространенной (или наиболее принятой повсеместно) кодировкой является ASCII (Американский стандартный код для обмена информацией, American Standard Code for Information Interchange). Повсеместное использование говорит о том, что ASCII — наиболее успешный программный стандарт современности. Нынешний ASCII стандартизован в 1986 году (ANSI X3.4, RFC 20, ISO/IEC 646:1991, ECMA-6) Американским национальным институтом по стандартизации (American National Standards Institute, ANSI).

ASCII является строго семибитной кодировкой, из чего следует, что она использует семь двоичных цифр, то есть интервал от 0 до 127. ASCII начинается с 32 невидимых управляющих символов (с кодами от 0 до 31) и заканчивается управляющим символом DEL (или delete) с кодом 127. Символы в диапазоне от 32 до 126 видимы — это пробел, знаки препинания, латинские буквы и цифры.

Восьмой бит в ASCII изначально использовался как бит целостности для проверки ошибок при передаче информации. Если не указывалось особо, он всегда равнялся 0. Это означает, что в ASCII каждый символ равняется одному байту.

Хотя ASCII было достаточно для передачи информации на английском, для других европейских языков, содержащих символы с ударениями, это было не так просто. Для них был разработаны стандарты семейства ISO 8859. Они были обратно совместимы с ASCII, но также использовали восьмой бит для дополнения таблицы дополнительными 127 символами для каждой кодировки. Ограничения ISO 8859 были незначительными, поэтому стандарт получил распространение. На данный момент существует 15 вариантов стандарта ISO 8859 (от 8859-1 до 8859-15). Однако для каждого символа вне ASCII-совместимого диапазона между этими стандартами возникал конфликт. Чтобы еще больше усилить конфликт между различными кодировками, для восточноевропейских языков корпорацией Microsoft был введен набор Windows-1252, использованный в ранних версиях Windows. Этот набор является надстройкой ISO 8859-1, обладающий собственными изменениями. Однако все же эти наборы были совместимы с ASCII.

Необходимость разработки совершенно отличных от ASCII однобайтовых кодировок для нелатинских алфавитов, как например EUC (Extended Unix Coding), используемый в японском и корейском (и в меньшей степени китайском) алфавитах, породила еще большую неразбериху с кодировками, из-за чего ряд операционных систем все еще использует различные наборы символов для одного и того же языка, например японские Shift-JIS и ISO-2022-JP. А пользователи, желающие видеть кириллицу, вынуждены были выбирать между KOI8-R (для русского и болгарского языков) и KOI8-U (для украинского языка), неудачной ISO 8859-5 и популярной Windows-1251. Все три семейства кодировок не полностью совместимы с ASCII (хотя в KOI8 фонетически созвучные кириллические символы расположены так же, как и латинские, благодаря чему даже при отбрасывании восьмого бита текст оставался читабельным в ASCII-терминалах в виде транслита).

Все это привело к путанице и полной невозможности многоязычного общения, в особенности с использованием различных алфавитов. Переходим к Юникоду.

2.3. Что такое Юникод?

Юникод отбрасывает лимит традиционных однобайтовых кодировок. Он использует 17 «плоскостей», содержащих по 65 536 кодов символов. Таким образом, максимальное возможное число символов равно 1 114 112. Поскольку в первой плоскости («Basic Multilingual Plane» или BMP) содержится почти всё, что вам может понадобиться, многие ошибочно посчитали, что Юникод — это 16-битный набор символов.

Юникод реализован несколькими способами, но распространены только два — UTF (Unicode Transformation Format) и UCS (Universal Character Set). Число после UTF обозначает число бит на каждый символ, когда как число после UCS обозначает число байт. UTF-8 стала наиболее распространенной при обмене текста Юникод из-за малых (сравнительно) потерь при хранении текста, Поэтому она и является основной темой данного документа.

2.4. UTF-8

UTF-8 — это кодировка переменной длины. Это означает, что для каждого символа она может использовать от одного до четырех байт. Первый байт UTF-8 используется для кодирования ASCII, благодаря чему UTF-8 полностью обратно совместима с ASCII. UTF-8 подразумевает, что ASCII и латинские символы равнозначны с небольшим увеличением размера данных, так как используется только первый байт. Пользователи восточных кодировок (например, японского), которым назначены старшие диапазоны, не так рады, так как в результате их данные разбухают на 50 %.

2.5. Что UTF-8 может сделать для вас

UTF-8 позволяет вам работать в совместимой со всеобщими стандартами и принятой по всему миру многоязычной среде, правда с небольшими потерями при обработке данных. UTF-8 — это наилучший способ для передачи не-ASCII символов через интернет, будь то электронная почта, IRC-сети или что-нибудь еще. Несмотря на это, множество людей расценивают использование UTF-8 при передаче данных неприличным и неуважительным. Всегда следует выяснять, поддерживает ли определенный канал, группа Usenet или список рассылки UTF-8 перед тем, как использовать символы из не-ASCII диапазона UTF-8.

Пред.: Использование UTF-8 в GentooВ началоУровень выше: Использование UTF-8 в GentooСлед.: Включение UTF-8 в Gentoo Linux
В началоИспользование UTF-8 в Gentoo → Кодировки