UTF-8: различия между версиями

[непроверенная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
Консистентность: байт → октет (первое достаточно многозначно, да и в RFC преимущественно второе), кроме секции про BOM, так как аббревиатура подразумевает слово «байт»
отмена правки 95168493 участника 185.29.130.2 (обс.) на мой взгляд статья более широкая, чем просто случай RFC
Метка: отмена
Строка 1:
'''UTF-8''' (от {{lang-en|Unicode Transformation Format, 8-bit}} — «формат преобразования Юникода, 8-бит») — распространённый стандарт кодирования текста, позволяющий более компактно хранить и передавать символы [[Юникод]]а, используя переменное количество [[октет (информатика)|октет]]ов ([[байт]]ов) (от 1 до 4), и обеспечивающий полную обратную совместимость с 7-битной кодировкой [[ASCII]]. Стандарт UTF-8 официально закреплён в документах RFC 3629 и ISO/IEC 10646 Annex D.
Кодировка UTF-8 сейчас является доминирующей в веб-пространстве. Она также нашла широкое применение в [[UNIX-подобная операционная система|UNIX-подобных операционных системах]]<ref>[http://w3techs.com/technologies/overview/character_encoding/all Usage Statistics of Character Encodings for Websites, June 2011]{{ref-en}}</ref>.
Формат UTF-8 был разработан [[2 сентября]] [[1992 год]]а [[Томпсон, Кен|Кеном Томпсоном]] и [[Пайк, Роб|Робом Пайком]], и реализован в [[Plan 9]].<ref>http://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt{{ref-en}}</ref>. Идентификатор кодировки в Windows – 65001<ref>https://docs.microsoft.com/en-us/windows/desktop/intl/code-page-identifiers</ref>
 
Сравнивая UTF-8 и [[UTF-16]], можно отметить, что наибольший выигрыш в компактности UTF-8 даёт для текстов на [[латиница|латинице]], поскольку латинские буквы без диакритических знаков, цифры и наиболее распространённые знаки препинания кодируются в UTF-8 лишь одним октетомбайтом, и коды этих латинских букв, цифр и знаков препинания точно соответствуют их кодам в [[ASCII]].<ref name="stringtheory">
{{Cite web
|url = http://weblogs.mozillazine.org/roc/archives/2008/01/string_theory.html
Строка 29:
Алгоритм кодирования в UTF-8 стандартизирован в <nowiki>RFC 3629</nowiki> и состоит из 3 этапов:
 
1. Определить количество [[Октет (информатика)|октетов]] ([[байт]]ов), требуемых для кодирования символа. Номер символа берётся из стандарта Юникод.
{| class="wikitable"
!Диапазон номеров символов
Строка 46:
|4
|}
Для символов Юникода с номерами от <code>U+0000</code> до <code>U+007F</code> (занимающими один октетбайт c нулём в старшем бите) кодировка UTF-8 полностью соответствует 7-битной кодировке US-ASCII.
 
2. Установить старшие [[бит]]ы первого октета в соответствии с необходимым количеством октетов, определённом на первом этапе:
Строка 122:
|}
 
== Пятый и шестой октетыбайты ==
Изначально кодировка UTF-8 допускала использование до шести октетовбайтов для кодирования одного символа, однако в ноябре 2003 года стандарт RFC 3629 запретил использование пятого и шестого октетовбайтов, а диапазон кодируемых символов был ограничен символом <code>U+10FFFF</code>. Это было сделано для обеспечения совместимости с UTF-16.
 
== Примечания ==