Без дальнейшего контекста я бы сказал, что максимальное количество байтов для символа в UTF-8 составляет
. Ответ: 6 байтов.
. Автор принятого ответа правильно указал на это.как «оригинальная спецификация».Это было действительно в RFC-2279 1 .Как отметил Дж. Коко в комментариях ниже, это изменилось в 2003 году с RFC-3629 2 , который ограничивает UTF-8 кодированием для 21 бита, который может обрабатываться с помощью схемы кодирования с использованием четырех байтов.
ответ, если охватывается весь юникод: 4 байта
Но в Java <= v7 </a> они говорят о 3-байтовом максимуме для представления юникода с UTF-8?Это связано с тем, что исходная спецификация юникода определяла только базовую многоязычную плоскость ( BMP ), то есть это более старая версия юникода или подмножество современного юникода.Так что
ответьте, если представляете только оригинальный юникод, BMP: 3 байта
Но OP говорит о том, что нужно идти другим путем.Не от символов до байтов UTF-8, а от байтов UTF-8 до представления «String» байтов.Возможно, автор принятого ответа получил это из контекста вопроса, но это не обязательно очевидно, поэтому может запутать случайного читателя этого вопроса.
Переходя от UTF-8 к нативной кодировке, мы имеемпосмотреть, как реализована «Строка».Некоторые языки, такие как Python> = 3, будут представлять каждый символ целочисленными кодовыми точками, что позволяет использовать 4 байта на символ = 32 бита, чтобы покрыть 21, который нам нужен для юникода, с некоторыми потерями.Почему не точно 21 бит?Потому что вещи быстрее, когда они выровнены по байту.Некоторые языки, такие как Python <= 2 и <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Character.html" rel="nofollow noreferrer"> Java , представляют символы с использованием кодировки UTF-16, что означает, что они должны использовать суррогатные пары для представления расширенного Unicode (не BMP).В любом случае это по-прежнему максимум 4 байта.
ответ, если идет UTF-8 -> собственная кодировка: 4 байта
Итак, окончательный вывод, 4 является наиболее распространенным правильным ответом, поэтому мы получили егоправо.Но пробег может варьироваться.