Привет Байты UTF‑8 прочитаны как Windows‑1251. Вернитесь к исходным байтам и декодируйте их как UTF‑8; не перекодируйте уже испорченную строку вслепую.
Кодовые точки, байты UTF‑8, единицы UTF‑16, нормализация, BOM и диагностика ошибок кодировки.
Копируйте сам знак, кодовые точки, байты UTF‑8 или единицы UTF‑16. Отдельные значения разделены пробелами.
| Знак | Кодовая точка | UTF‑8 | UTF‑16 | Что показывает |
|---|---|---|---|---|
| Отдельные кодовые точкиОдин знак Unicode может занимать от одного до четырёх байтов в UTF‑8. | ||||
| Латинская AASCII входит в UTF‑8 без изменений и занимает один байт. | ||||
| Кириллическая ЯБольшинство кириллических букв кодируется двумя байтами UTF‑8. | ||||
| Составная éГотовая буква с диакритикой представлена одной кодовой точкой. | ||||
| Знак евроЗнак из базовой многоязычной плоскости занимает три байта UTF‑8. | ||||
| Иероглиф 中Типичный иероглиф CJK также занимает три байта UTF‑8. | ||||
| ЭмодзиКодовая точка вне BMP: четыре байта UTF‑8 и суррогатная пара UTF‑16. | ||||
| ПоследовательностиОдин видимый знак может состоять из нескольких кодовых точек. | ||||
| Разложенная éБуква e и комбинируемый акут выглядят как é, но остаются двумя кодовыми точками. | ||||
| Женщина‑технологДва эмодзи соединены символом ZERO WIDTH JOINER U+200D. | ||||
| Флаг РоссииФлаг складывается из двух региональных индикаторов, а не из одного символа. | ||||
| Эмодзи с модификаторомБазовый эмодзи и модификатор оттенка кожи образуют один видимый знак. | ||||
Копируйте готовые объявления и вызовы API. Каждая группа отвечает за отдельный уровень работы с кодировкой.
| Задача | Код или байты | Когда использовать |
|---|---|---|
| Веб и HTMLКак объявить UTF‑8 и записать символ без прямого ввода. | ||
| Кодировка HTML | Помещайте в начале head, чтобы браузер сразу декодировал документ как UTF‑8. | |
| HTTP-заголовок | Серверное объявление кодировки ответа; должно совпадать с фактическими байтами. | |
| Числовая HTML-ссылка | Записывает кодовую точку в HTML. Это синтаксис разметки, а не отдельная кодировка. | |
| JavaScriptПреобразование строк в байты и создание символов по кодовой точке. | ||
| Строка → UTF‑8 | Возвращает Uint8Array с байтами UTF‑8. | |
| UTF‑8 → строка | Декодирует байты; fatal: true превращает неверную последовательность в ошибку. | |
| Кодовая точка → символ | Создаёт 😀 без ручной записи суррогатной пары UTF‑16. | |
| НормализацияПриведение эквивалентных последовательностей к предсказуемой форме. | ||
| NFC: составная форма | Обычный выбор для хранения, сравнения и обмена текстом без потери различий совместимости. | |
| NFD: разложенная форма | Разделяет составные символы на основу и комбинируемые знаки. | |
| NFKC: совместимость | Складывает совместимые варианты вроде полноширинных форм; применяйте только когда допустима потеря таких различий. | |
| BOM и порядок байтовСигнатуры в начале потока; для UTF‑8 BOM обычно не требуется. | ||
| BOM UTF‑8 | Сигнатура UTF‑8. Порядка байтов у UTF‑8 нет, поэтому добавляйте её только когда требует формат или программа. | |
| BOM UTF‑16LE | Указывает порядок байтов от младшего к старшему для UTF‑16. | |
| BOM UTF‑16BE | Указывает порядок байтов от старшего к младшему для UTF‑16. | |
Видимый рисунок часто указывает на место ошибки, но возможность восстановления зависит от сохранности исходных байтов.
Привет Байты UTF‑8 прочитаны как Windows‑1251. Вернитесь к исходным байтам и декодируйте их как UTF‑8; не перекодируйте уже испорченную строку вслепую.
Привет Байты UTF‑8 прочитаны как Windows‑1252 или совместимая однобайтовая кодировка. Проверьте charset в HTTP, HTML и настройках импорта файла.
������ Декодер встретил недопустимые байты и подставил U+FFFD REPLACEMENT CHARACTER. Найдите исходный файл или поток: после замены на � восстановить потерянные байты по строке обычно нельзя.
?????? Текст сохранили в кодировке, которая не умеет представить нужные символы. Перейдите на UTF‑8 до записи. Если символы уже заменены вопросами, нужен исходный текст или резервная копия.
Рекомендации по кодировкам сверены со WHATWG Encoding Standard; нормализация и поведение BOM — с документами Unicode Normalization Forms и Unicode UTF & BOM FAQ.
Скопируйте символ, преобразуйте разметку, очистите фрагмент или сохраните результат в блокноте.
Unicode назначает символам абстрактные кодовые точки. UTF‑8 — один из способов записать их байтами. UTF‑16 и UTF‑32 — другие формы кодирования.
Строки JavaScript представлены единицами UTF‑16. U+1F600 находится вне базовой многоязычной плоскости и записывается суррогатной парой — двумя кодовыми единицами.
Обычно нет: в UTF‑8 нет неоднозначности порядка байтов. BOM может быть сигнатурой, но добавлять его стоит только по требованию формата или программы.
Только если сохранились исходные байты или обратимая цепочка ошибочных преобразований. Символы замены и вопросительные знаки часто означают, что часть информации уже потеряна.
Делайте это на выбранной границе системы, обычно в NFC перед хранением или сравнением. Не применяйте совместимую нормализацию многократно к произвольному содержимому.