Пошаговая итерация будет работать для данных в кодировке UTF-8.Не по волшебству, а по замыслу: UTF-8 был создан для обратной совместимости с ASCII.
ASCII использует только байтовые значения от 0 до 127, оставляя верхнюю половину возможных значений для расширений любого вида.UTF-8 использует это преимущество в том смысле, что любая кодовая точка Unicode вне ASCII кодируется с использованием байтов в диапазоне 128..255.
Например, буква «Ċ» (заглавная буква C с точкой выше) имеетзначение кодовой точки Unicode U+010A
.В UTF-8 это кодируется с помощью последовательности байтов C4 8A
, таким образом, без использования байта 0A
, который является новой строкой ASCII.
В отличие от этого, UTF-16 кодирует тот же символ, что и 0A 01
или 01 0A
(в зависимости от Endianness).Так что я думаю, что UTF-16 небезопасно делать построчную итерацию.Это не так часто, как кодировка файлов.