Почему возникают нюансы с длиной строки в UTF-8?

В UTF-8 число байтов не равно числу кодовых точек, а кодовые точки не всегда равны видимым символам. Поэтому понятие «длина строки» требует уточнения.

Короткий ответ

Что ответить на собеседовании

В UTF-8 число байтов не равно числу кодовых точек, а кодовые точки не всегда равны видимым символам. Поэтому понятие «длина строки» требует уточнения.

Подробный разбор

Ответ с пояснениями

В UTF-8 число байтов не равно числу кодовых точек, а кодовые точки не всегда равны видимым символам. Поэтому понятие «длина строки» требует уточнения.

В Go len(s) считает байты, а utf8.RuneCountInString — руны. Буква с комбинируемым знаком или составной emoji может содержать несколько рун, но выглядеть одним символом. Для пользовательского ограничения по видимым символам нужны графемные кластеры; для сетевого лимита — байты.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее