Зависит от представления строки.
Когда-то у нас были простые строковые представления (например, ASCII), в которых все коды символов занимали одну единицу пространства в строке (8 битов, игнорируя самый верхний).
[Ранее были строковые представления из 6 и 9 битов, но они имели то же свойство
единиц фиксированного размера).
Обработка неанглийских языков (Восточная Европа, Азия, ...) заставляла людей предлагать различные виды так называемых «двухбайтовых символьных строк» (DBCS), в которых обычные символы занимали одну единицу (довольно почти такой же набор, как и символы ASCII), теперь почти повсеместно 8 бит, но остальные символы кодируются как два байта, первый из которых занимает часть 8-битного пространства, которое не требуется ASCII, и второй байт, предоставляя схема кодирования символов, ~~ 15-битные символы.
Разрыв таких строк беспорядочный, потому что подпрограмма, которая делает это, должна понимать точную схему кодирования DBCS и собирать 1 или 2 байта за раз в соответствии.
Вместе с Unicode, чтобы решить проблему, предоставив 16-битные символы. Большинство современных языков программирования (Java, C #) предоставляют эти 16-битные символы в качестве основы для своих строковых представлений. Жизнь стала намного проще (если мы игнорируем тот факт, что даже 16-битный юникод иногда позволяет составить два последовательных символа для формирования того, что равно другому символу, уже определенному в наборе).
Комитет, который улучшает Unicode, однако, не смог устоять и расширил Unicode за пределы 16 бит. Теперь мы застряли в тупой схеме DBCS (на самом деле хуже, некоторые занимают несколько байтов, IIRC), которую Unicode должен был исправить. Итак, для обработки строк в тех
современные языки, вы снова должны понять, когда байт представляет отдельный символ, и когда он представляет вводную последовательность из нескольких символов.
Если вам повезет, строка, которую вы имеете, состоит только из 16-битных одиночных символов в Unicode. Если нет, вам нужно обратиться к руководству по Unicode и помолиться, чтобы у вас была библиотека управления строками Unicode, чтобы помочь вам сделать это правильно.
Этот последний бит - такая колоссальная стычка, что многие кодеры бьют и придерживаются символов Unicode-as-single-wide. Работает в Европе. Не рекомендуется в Азии.