UTF-8 — что это и зачем нужна кодировка символов
Автор: RuWeb
Время чтения: 7 минут
Поделиться:
Машины и люди говорят «на разных языках», однако пользователи видят на экране компьютера понятный им текст, даже если в памяти устройства он хранится в виде чисел. При создании веб-сайта разработчику необходимо помнить, что возможность его использовать должна быть не только у сервера, но и у конечного пользователя. Для преобразования числового представления информации в ее символьный вид используют кодировки. Долгое время разработчики использовали разные схемы для трансформации текста, и если на другом устройстве работала иная кодировка, часть информации не могла быть распознана и терялась. Ситуация исправилась с появлением Юникода. В нашем материале отвечаем на вопросы: UTF-8 — что это? Для чего служит? Какие преимущества и недостатки имеет стандарт?
Что такое UTF-8
UTF-8 (Unicode Transformation Format, 8-bit) — это система кодирования, работающая по стандарту Unicode.
UTF-8 входит в семейство кодировок Unicode, каждая из которых уникальна. Особенность UTF-8 заключается в том, что она представляет символы в однобайтовых единицах. Один байт содержит в самом простом виде восемь бит информации, что нашло отражение в названии кодировки.
Для чего нужна кодировка символов
Компьютеры обрабатывают информацию в двоичной системе. Чтобы разобраться в текстовом сообщении, им необходимо обработать последовательность нулей и единиц. Например, английская литера А — это 01000001. Человеку для понимания текста этого недостаточно, он воспринимает данные, записанные с помощью букв, цифр и других символов, кроме того ему потребуется знание языка, на котором написано сообщение. Чтобы текст, передаваемый компьютером, стал доступен для пользователя, необходимо преобразовать его числовое представление в символьное. Инструментом для трансформации являются кодировки, которые содержат набор правил по преобразованию одного способа представления информации в другой.
Компьютер говорит на языке битов и байтов. Информация в двоичной системе измеряется с помощью битов. Если объем данных достигает 8 битов, то для удобства подсчетов используют большую единицу измерения — байт, далее следуют килобайты, мега- и гигабайты. Каждый символ текста записывается в компьютерной системе в виде строки битов.
Человек говорит на языке символов. Одним из первых наиболее универсальных стандартов кодирования является ASCII. Он имеет библиотеки, в которых систематизированы элементы двух языков — байтового и символьного. Буквам, знакам пунктуации, цифрам присваиваются индивидуальные числовые коды. Например, литере «B» в верхнем регистре по стандарту кодирования ASCII присваивается код «066».
Стандарт ASCII содержит данные о самых востребованных символах и работает для передачи текста, написанного латинскими буквами. Однако пользователи веб-ресурсов, приложений, программного обеспечения и других ИТ-продуктов рассредоточены по всему миру. Поэтому для кодирования всех языков человечества и вообще любого символа, который когда-либо использовался, включая эмотиконы, появился стандарт с более широкими возможностями по хранению символов и соответствующих им кодов — Unicode.
Преимущества и недостатки
Юникод — это набор символов, взятых из всех языков мира, глифов и эмодзи.
Языки программирования (ЯП) по-разному поддерживают и используют кодировки. Иногда они могут искажать Unicode. Недостатки Юникода для разных ЯП и программ:
- PHP. Данный язык программирования поддерживает 256 символов, то есть воспринимает 1 символ в строке за 1 байт информации. Так происходит, даже если символ в строке весит больше одного байта. Например, смайл может весить четыре байта, а для PHP все равно один. Однако это можно исправить, настроив многобайтовые функции. Тогда при подсчете длины строки PHP будет обращаться к памяти, а не считать символ за байт.
- JavaScript. Работает с кодировкой UTF-16. Сложные символы требуют две кодовых точки для ссылки.
- MySQL. Система управления базами данных не поддерживает UTF-8 в его стандартном виде. MySQL недостаточно 24 битов, чтобы представить один символ. СУБД поддерживает расширенную версию кодировки — UTF-8mb4.
Максимальный потенциал
С помощью UTF-8 можно записать код любой длины. Однако, для того чтобы работа алгоритма была эффективной и надежной, лучше ограничить размер кода. Unicode 6.х является действующим стандартом и предполагает использование кода до четырех байт в UTF-8.
Сравнение UTF-8 и UTF-16
UTF-8 и UTF-16 — две самые широко используемые кодировки в стандарте Unicode. Они обе обладают переменной длинной кодирования. Один символ в них может быть представлен разным количеством байт. В Юникоде все данные хранятся в таблице и отсортированы по количеству байт, которое они имеют в двоичной системе. В начале стандарта символы могут занимать всего 1 байт, поэтому и UTF-8 зашифрует их с помощью 1 байта.
UTF-16 оперирует данными из двух и четырех байт. Кодировка подходит для восточных языков.
Заключение
UTF-8 является самым распространенным методом кодирования в Сети, поскольку позволяет хранить текст, содержащий любой символ. Он способен перевести символы, содержащиеся в библиотеке Юникода, в байты, а затем выполнить обратный процесс.
Автор: RuWeb
Время чтения: 7 минут
Поделиться:
другие полезные статьи
09.01. 2023 Автор: RuWeb
WordPress (WP) — самая популярная бесплатная система управления контентом. Поэтому пользователи со всего мира ежедневно создают сайты на этой платформе.
16.01.2023 Автор: RuWeb
Регистрация доменного имени — задача, с которой рано или поздно сталкивается каждый веб-мастер, поскольку без этого пункта полноценно запустить сайт в интернете не получится.
23.01.2023 Автор: RuWeb
Доменное имя является важной частью продвижения сайта в интернете. Оно упрощает поиск ресурса для пользователей, влияет на его оптимизацию в поисковых системах и формирует первое впечатление о проекте — еще до того, как человек его посетит.
Инструкция по переходу на UTF-8
Вычислительная система кафедры перешла на использование многобайтовой кодировки UTF-8 для файловых систем и пользовательского окружения вместо однобайтовой кодировки KOI8-R. В данной инструкции рассматриваются типичные проблемы, которые могли возникнуть у пользователей в связи с данным переходом и предлагаются способы их решения (изменения настроек, команды и т.п.).
Основные понятия
Юнико́д, или Унико́д (англ. Unicode™) — стандарт кодирования символов, позволяющий представить знаки практически всех письменных языков.
UTF-8 (от англ. Unicode Transformation Format — формат преобразования Юникода) — кодировка, реализующая представление Юникода, совместимое с 8-битным кодированием текста.
Важно понимать, что один символ в кодировке UTF-8 может быть представлен более чем одним байтом. С этим связано, например, то, что файл, содержащий текст в кодировке UTF-8 будет иметь больший размер по сравнению с файлом, содержащим тот-же текст в кодировке KOI8-R.
Пример: команда wc имеет ключ -c для подсчета байтов и ключ -m для подсчета символов.
$ echo -n "Слово." | wc -c 11 $ echo -n "Слово." | wc -m 6
Имена файлов
Имена файлов были перекодированы автоматически с помощью утилиты convmv:
convmv -r -f koi8-r -t utf-8 --notest <каталог>
Каждому пользователю, в домашнем каталоге которого утилита convmv переименовала хотя бы один файл, был автоматически выслан журнал переименований.
При необходимости можно выполнить обратное преобразование:
convmv -r -f utf-8 -t koi8-r <файлы и каталоги>
После проверки вывода команды повторить с ключем —notest. Ключ -r включает рекурсивный обход каталогов.
Содержимое файлов
Для того, чтобы преобразовать содержимое файлов из кодировки KOI8-R в кодировку UTF-8 можно воспользоваться командой:
recode koi8-r..utf-8 <filename>
Для потокового перекодирования используется команда:
iconv -f koi8-r <filename>
Редактор Emacs может автоматически распознать кодировку текста при открытии файла. Принудительно задать кодировку открытия или сохранения файла в редакторе Emacs можно следующим образом:
- Ввести комбинацию клавиш
C-x RET c
. - Внизу экрана будет запрошена кодировка, которую вы хотите применить для следующей команды.
- Введите команду, которая будет выполнена с применением введенной на предыдущем шаге кодировки, например:
- комбинацию клавиш для открытия файла:
C-x C-f
; - комбинацию клавиш для сохранения файла:
C-x C-s
.
- комбинацию клавиш для открытия файла:
Приложения
Текстовый терминал из Windows
Для корректного отображения русского текста при входе на серверы кафедры с помощью терминального клиента PuTTY нужно указать в настройках:
- Раздел Window/Translation
- Character set translation on recieved data: UTF-8
Текстовый терминал из Linux
Если системная локаль не UTF-8, то необходимо запустить X-терминал с поддержкой UTF-8 и выполнить вход по ssh из него.
Если системная локаль UTF-8, то никаких дополнительных действий предпринимать не надо.
Если по какой-то причине при входе по ssh не установились правильно переменные окружения локали (вывод команды locale не содержит строки LANG=ru_RU.UTF-8
), то необходимо выполнить команду:
export LANG=ru_RU.UTF-8
WinSCP
Для корректного отображения русских имен файлов:
- Раздел Environment
- UTF-8 encoding for filenames: On
TEX
- После выполнения перекодировки содержимого tex-файла (см. Содержимое файлов) необходимо сменить кодировку в преамбуле:
Было:
\usepackage[koi8-r]{inputenc}
Стало:
\usepackage[utf8x]{inputenc}
- Также необходимо подключить пакет ucs:
\usepackage{ucs}
- Для установки диакритических знаков (ударений) нужно использовать полную форму стандартной записи \’, т.е.:
Б\'{о}льшую
Bibtex
Bib-файлы, содержащие описание литературы, хранятся в кодировке KOI8-R. После выполнения команды bibtex необходимо сначала перекодировать получившийся bbl-файл в кодировку UTF-8 (см. Содержимое файлов), а затем выполнять трансляцию tex-файлов, подключающих этот список литературы.
Кодировка UTF-8
Резюме
UTF-8 — компромиссная кодировка символов, которая может быть как ASCII (если файл представляет собой простой текст на английском языке), но также может содержать любые символы Юникода (с некоторым увеличением размера файла).
UTF означает формат преобразования Unicode. «8» означает, что он использует 8-битные блоки для представлять персонажа. Количество блоков, необходимых для представления символа, варьируется от от 1 до 4.
Одной из действительно приятных особенностей UTF-8 является то, что она совместима со строками, оканчивающимися нулем. Ни один символ не будет иметь нулевой (0) байт при кодировании. Это означает, что код C, который имеет дело с char[] будет «просто работать».
Вы можете попробовать тестовую страницу UTF-8, чтобы увидеть, насколько хорошо ваш браузер (и шрифт по умолчанию) поддерживают UTF-8.
Если вы разработчик приложений, эта статья Joel On Software о Unicode довольно хорошее резюме всего, что вам нужно знать.
Дополнительные ссылки:
- Если вам интересны подробности, официальная спецификация RFC 3629
- Часто задаваемые вопросы Маркуса Куна
- История Роба Пайка об его изобретении
Деталь
Для любого символа, равного или меньшего 127 (шестнадцатеричный 0x7F), представление UTF-8 составляет один байт. Это всего лишь младшие 7 бит полного значения Unicode. Это также то же самое, что и значение ASCII.
Для символов, равных или меньше 2047 (шестнадцатеричный 0x07FF), представление UTF-8 распределяется по двум байтам. В первом байте будут установлены два старших бита и третий бит очищен (т. е. от 0xC2 до 0xDF). Второй байт будет иметь установлен верхний бит, а второй бит очищен (т. е. от 0x80 до 0xBF).
Для всех символов, равных или превышающих 2048, но менее 65535 (0xFFFF), представление UTF-8 распределяется по трем байтам.
В следующей таблице показан формат таких последовательностей байтов UTF-8 (где «свободные биты», обозначенные крестиками в таблице, объединяются в порядок показан и интерпретирован от наиболее значимого к наименее значимому).
Двоичный формат байтов в последовательности
1-й байт | 2-й байт | 3-й байт | 4-й байт | Количество бесплатных битов | Максимальное выражаемое значение Unicode |
---|---|---|---|---|---|
0ххххххх | 7 | 007F шестигранник (127) | |||
110ххххх | 10хххххх | (5+6)=11 | 07FF шестигранник (2047) | ||
1110хххх | 10хххххх | 10хххххх | (4+6+6)=16 | Шестигранник FFFF (65535) | |
11110xxx | 10хххххх | 10хххххх | 10хххххх | (3+6+6+6)=21 | 10FFFF шестигранник (1 114 111) |
Значение каждого отдельного байта указывает его функцию UTF-8 следующим образом:
- от 00 до 7F hex (от 0 до 127): первый и единственный байт последовательности.
- от 80 до BF hex (от 128 до 191): продолжающийся байт в многобайтовой последовательности.
- C2 в DF hex (от 194 до 223): первый байт двухбайтовой последовательности.
- От E0 до EF hex (от 224 до 239): первый байт трехбайтовой последовательности.
- От F0 до FF hex (от 240 до 255): первый байт четырехбайтовой последовательности.
UTF-8 остается простым однобайтовым, совместимым с ASCII методом кодирования до тех пор, пока не символы больше 127 присутствуют непосредственно. Это означает, что документ HTML технически объявленный как закодированный как UTF-8, может оставаться обычным однобайтовым файлом ASCII. Документ может оставаться поэтому, даже если он может содержать символы Unicode выше 127, до тех пор, пока все символы выше 127 упоминаются косвенно с помощью амперсанда.
Примеры закодированных символов Unicode (в шестнадцатеричной системе счисления)
16-битный Unicode | Последовательность UTF-8 |
---|---|
0001 | 01 |
007F | 7Ф |
0080 | С2 80 |
07FF | ДФ БФ |
0800 | Е0 А0 80 |
ФФФФ | ЭФ БФ БФ |
010000 | F0 90 80 80 |
10FFFF | Ф4 8Ф БФ БФ |
Кодировка UTF-8 — преобразование текста в UTF-8 — онлайн
Самый простой в мире онлайн-кодировщик UTF8 для веб-разработчиков и программистов. Просто вставьте свой текст в форму ниже, нажмите кнопку Кодировка UTF8, и вы получите данные в кодировке UTF8. Нажимаешь кнопку — получаешь UTF8. Никакой рекламы, ерунды и мусора. Работает со строками ASCII и Unicode.
Объявление : Мы только что запустили DEVURLS — отличный агрегатор новостей для разработчиков. Проверьте это!
(отменить)
Хотите декодировать текст UTF8?
Используйте декодер UTF8!
Кодировщик UTF8 может быть полезен, если вы проводите кроссбраузерное тестирование. Например, вы можете использовать его для обработки данных для тестирования форм ввода или проверки правильности данных. Если форма ввода имеет слабую проверку UTF8, вы можете обойти различные проверки безопасности. Точно так же вы можете использовать кодировщик UTF8, чтобы узнать, какие байты присутствуют во входных данных. Например, текст может иметь омоглифы, которые выглядят как обычные символы, но на самом деле являются похожими символами Unicode. Кодируя свои данные, вы сможете определить, из каких байтов состоит каждый символ. Кроме того, вы можете использовать кодировщик UTF8, чтобы проверить, сколько байтов занимает ввод. Если браузер проверяет длину данных, то, используя странные символы Unicode, вы можете передать ему больше байтов, чем он ожидает, что может привести к проблемам в вашем приложении.
Ищете дополнительные инструменты веб-разработчика? Попробуйте эти!
URL Encoder
URL Decoder
URL Parser
HTML Encoder
HTML Decoder
Base64 Encoder
Base64 Decoder
HTML Prettifier
HTML Minifier
JSON Prettifier
JSON Minifier
JSON Escaper
JSON Unescaper
JSON Validator
JS Prettifier
JS Minifier
JS Validator
CSS Prettify
Minifier CSS
XML Prettifier
XML Minifier
XML в JSON Converter
JSON TO CONVERTER
XML TO CSV CONTRET Преобразователь XML
Преобразователь YAML в TSV
Преобразователь TSV в YAML
Преобразователь XML в TSV
Преобразователь TSV в XML
Преобразователь XML в текст
Преобразователь JSON в CSV
CSV в JSON Converter
JSON TO YAML Converter
YAML TO JSON Converter
JSON TO TSV Converter
TSV TO JSON Converter
json to Text Converter
CSV To YAML Converter
YAML. Конвертер TSV в CSV
Конвертер CSV в TSV
Конвертер CSV в текстовые столбцы
Конвертер текстовых столбцов в CSV
Конвертер TSV в текстовые столбцы
Конвертер текстовых столбцов в TSV
CSV Transposer
Столбки CSV для строк преобразователя
CSV строки в столбцы преобразователь
CSV Clecper Swapper
CSV Column Export
CSV Column Column
CSV
CSV COLUNDER
CSV
CSV COLUNDER
CSV CSVELCER
CSV
CSV. Средство удаления столбцов CSV
Средство смены разделителя CSV
Транспозитор TSV
Преобразователь столбцов в строки TSV
Преобразователь строк в столбцы TSV
Преобразователь столбцов TSV
TSV Column Exporter
TSV Column Replacer
TSV Column Prepender
TSV Column Appender
TSV Column Inserter
TSV Column Deleter
TSV Delimiter Changer
Delimited Column Exporter
Delimited Column Deleter
Delimited Column Replacer
Преобразователь текста
Преобразователь текстовых столбцов в строки
Преобразователь текстовых строк в столбцы
Преобразователь текстовых столбцов
Text Column Delimiter Changer
HTML to Markdown Converter
Markdown to HTML Converter
HTML to Jade Converter
Jade to HTML Converter
BBCode to HTML Converter
BBCode to Jade Converter
BBCode to Text Converter
HTML Преобразователь времени в текст
HTML Stripper
Преобразователь сущностей текста в HTML
Преобразователь времени UNIX в время UTC
Преобразователь времени UTC в время UNIX
IP в двоичный преобразователь
Двоирный в IP -преобразователь
IP в десятичный преобразователь
Октябрь в IP -преобразователь
IP в восьмовый преобразователь
Десятичный в IP -преобразователь
IP в Hex Converter
Hex в IP -конвертер
IP — Сортировщик адресов
Генератор паролей MySQL
Генератор паролей MariaDB
Генератор паролей Postgres
Генератор паролей Bcrypt
Средство проверки паролей Bcrypt
Scrypt Password Generator
Scrypt Password Checker
ROT13 Encoder/Decoder
ROT47 Encoder/Decoder
Punycode Encoder
Punycode Decoder
Base32 Encoder
Base32 Decoder
Base58 Encoder
Base58 Decoder
Ascii85 Encoder
Декодер Ascii85
Кодировщик UTF8
Декодер UTF8
Кодировщик UTF16
Декодер UTF16
Кодировщик Uuencoder
Uudecoder
Morse Code Encoder
Morse Code Decoder
XOR Encryptor
XOR Decryptor
AES Encryptor
AES Decryptor
RC4 Encryptor
RC4 Decryptor
DES Encryptor
DES Decryptor
Triple DES Encryptor
Triple DES Decryptor
Rabbit Encryptor
Rabbit Decryptor
NTLM Hash Calculator
MD2 Hash Calculator
MD4 Hash Calculator
MD5 Hash Calculator
MD6 Hash Calculator
RipeMD128 Hash Calculator
RipeMD160 Hash Calculator
RipeMD256 Hash Calculator
RipeMD320 Hash Calculator
SHA1 Hash Calculator
SHA2 Hash Calculator
SHA224 Hash Calculator
Калькулятор хэша SHA256
Калькулятор хэша SHA384
Калькулятор хэша SHA512
Калькулятор хэша SHA3
CRC16 Хэш -калькулятор
CRC32 Хэш -калькулятор
ADLER32 Хэш -калькулятор
Whirlpool Hash Calculator
Все хеш -калькулятор
секунд к H: M: S Converter
H: M: S Converter
Seconds Secondable. Время
Преобразователь двоичного кода в восьмеричный
Преобразователь двоичного кода в десятичный
Преобразователь двоичного кода в шестнадцатеричный
Преобразователь восьмеричного в двоичный
Преобразователь восьмеричного в десятичный
Октябно в шестнадцатеричный преобразователь
Десятичный в двоичный преобразователь
Десятичный в восьмовый преобразователь
Десятичный в шестнадцатеричный преобразователь
Hex в бинарный преобразователь
Hex в октальный конвертер
Hex до децимального преобразователя
Decimal To BCD Converter
Decimal To BCD
66669.Decimal To BCD
.Преобразователь восьмеричных чисел в двоично-десятичные
Преобразование двоично-десятичных чисел в восьмеричные
Преобразование шестнадцатеричных чисел в двоично-десятичные
Преобразование двоично-десятичных чисел в шестнадцатеричные
Преобразование двоичных чисел в серые
от серого до бинарного преобразователя
Октана -серый преобразователь
от серого до восьмиугольника
Десятичный в серой конвертер
от серых до десятичного преобразователя
Hexadecamal в серой конвертер
серо Калькулятор продукта
Калькулятор двоичного побитового И
Калькулятор двоичного побитового И-НЕ
Калькулятор двоичного побитового ИЛИ
Калькулятор двоичного побитового НЕ-ИЛИ
двоичный бить калькулятор XOR
Бинарный бить калькулятор XNOR
Бинарный битевой битевой бите
Преобразователь числовой базы
Преобразователь римских чисел в десятичные
Преобразователь десятичных чисел в римские
Преобразователь чисел в слова
Преобразователь слов в числа
Круглые числа выше
Круглые номера вниз
UTF8 в шестнадцатеричный преобразователь
HEX в UTF8 преобразователь
Текст в коды ASCII
ASCII в текстовый преобразователь
Текст в бинарный преобразователь
. Библио
Преобразователь восьмеричного в текст
Преобразователь текста в десятичный
Преобразователь десятичного в текст
Преобразователь текста в шестнадцатеричный
Преобразователь шестнадцатеричного в текст
Текст в нижний конвертер
Текст в верхний конвертер
Текст в случайное преобразователь
Текст в Tittlecase Converter
СЛОЖИТЕ СЛОВА В ТЕКСТ
ТЕКСТРЕЙН. Конвертер
Преобразователь табуляции в пробелы
Преобразователь пробелов в символы новой строки
Преобразователь новой строки в пробелы
Преобразователь символьного акцента
Extra WhiteSpaces Удаление
All WhiteSpaces Remover
Семовер на пунктуацию
тысячи сепараторов Adder
Бэктеша для удаления
BackSlash Adder
Текст
Text Preater
.. Вращатель символов влевоВращатель текстовых символов вправо
Калькулятор длины текста
Сортировщик текста по алфавиту
Цифровой сортировщик текста
Текст по длине сортировщик
Текст из генератора REGEX
Центральный текст
Текст правой кнопки
Текст левого столбца
Текст правого пада
. Regex Match Extractor
Regex Match Replacer
Email Extractor
URL Extractor
Number Extractor
List Merger
List Zipper
List Intersection
List Difference
Printf Formatter
Text Grep
Text Head
Text Tail
Line Range Extractor
Word Sorter
Word Wrapper
Word Splitter
Add Line Numbers
Add Line Prefixes
Add Суффиксы строк
Добавление префикса и суффикса
Поиск самой длинной текстовой строки
Поиск самой короткой текстовой строки
Удаление повторяющихся строк
Удаление пустых строк
Текстовая линия Rampodizer
Letter Rampedizer
Текстовая линия Joiner
Строковой разветвитель
Text Line Reverser
Фильтр текстовой линии
Номер буквы в текстовом счетчике
Номер слов в текстовом счетчике
Счетчик текста
Счетчик количества абзацев в тексте
Калькулятор частоты букв
Калькулятор частоты слов
Калькулятор частоты фраз
Text Statistics
Random Element Picker
Random JSON Generator
Random XML Generator
Random YAML Generator
Random CSV Generator
Random TSV Generator
Random Password Generator
Random String Generator
Random Number Generator
Генератор случайных дробей
Генератор случайных бинов
Генератор случайных чисел
Генератор случайных чисел
Генератор случайных шестнадцатеричных чисел
Random Byte Generator
Random IP Generator
Random MAC Generator
Random UUID Generator
Random GUID Generator
Random Date Generator
Random Time Generator
Prime Number Generator
Fibonacci Number Generator
Pi Digit Generator
E Генератор цифр
Преобразователь десятичных чисел в научные
Преобразователь научных чисел в десятичные
Преобразователь JPG в PNG
PNG в JPG Converter
GIF TO PNG Converter
GIF для JPG Converter
BMP в PNG Converter
BMP в JPG Converter
Image To Base64
Файл Base64 Converter
jbles.