Без подальшого контексту я б сказав, що максимальна кількість байт для символу в UTF-8 становить
відповідь: 6 байт
Автор прийнятої відповіді правильно вказав це як "оригінальну специфікацію". Це було дійсним згідно з RFC-2279 1 . Як зазначив Дж. Коко в коментарях нижче, це змінилося в 2003 р. З RFC-3629 2 , який обмежує UTF-8 кодуванням для 21 біта, яке можна обробляти за допомогою схеми кодування за допомогою чотирьох байтів.
відповідь, якщо охоплює всі Unicode: 4 байти
Але в Java <= v7 вони говорять про 3-байтовий максимум для представлення Unicode з UTF-8? Це тому, що оригінальна специфікація Unicode визначала лише базову багатомовну площину ( BMP ), тобто це старіша версія unicode або підмножина сучасного unicode. Так
відповідь, якщо він представляє лише оригінальний унікод, BMP: 3 байти
Але ОП говорить про те, щоб піти іншим шляхом. Не від символів до байтів UTF-8, а від байтів UTF-8 до "рядка" подання байтів. Можливо, автор прийнятої відповіді отримав це з контексту запитання, але це не обов'язково очевидно, тому може заплутати випадкового читача цього питання.
Переходячи від UTF-8 до власного кодування, ми повинні поглянути на те, як реалізовано "Рядок". Деякі мови, наприклад Python> = 3, представлятимуть кожен символ із цілочисельними кодовими точками, що дозволяє 4 байти на символ = 32 біти, щоб покрити 21, необхідний нам для Unicode, з деякими витратами. Чому не саме 21 біт? Тому що все відбувається швидше, коли вони вирівняні за байтами. Деякі мови, такі як Python <= 2 та Java, представляють символи з використанням кодування UTF-16, що означає, що вони повинні використовувати сурогатні пари для представлення розширеного Unicode (не BMP). У будь-якому випадку це все ще максимум 4 байти.
відповідь, якщо йде UTF-8 -> власне кодування: 4 байти
Отже, остаточний висновок 4 - найпоширеніша правильна відповідь, отже, ми правильно зрозуміли. Але, пробіг може варіюватися.