В другом месте я читал вопрос о том, «Почему нет необходимости в знаке порядка байтов в UTF-8», особенно в отношении систем с разным порядком байтов.
Для меня TLDR; заключается в том, что UTF-8 заставляет вас записывать в память одни и те же числа в одном и том же порядке, причем эти числа представляют собой каждый байт кода, и он всегда читается одинаково (байт за байтом).
Более расширенное объяснение
Некоторый символ может иметь код 11100010 10000010 10101100 и будет представлен одинаково на любом компьютере, потому что utf8 указывает, как кодировать символ.
Каждый из этих байтов будет прочитан (как показывает процесс декодирования) один за другим, так что, опять же, нет никакой двусмысленности.
Когда первый байт начинается с 111, им приходится искать 3 байта, а затем использовать их для поиска/получения строки. Вот как читаются многобайтовые символы.
Это правильное объяснение? Если вы не согласны, то почему и какова правильная причина?
Порядок байтов также имеет значение для UTF-32.





Я не совсем то, о чем вы спрашиваете, так что, возможно, это не тот ответ, который вы ищете.
Порядок байтов имеет значение только тогда, когда вы имеете дело с целочисленными примитивами, размер которых превышает один байт.
Например, если вы сохраняете число 5 как 16-битное значение, оно естественным образом будет храниться в следующем виде на оборудовании с прямым порядком байтов (например, ARM):
00000000 00000101
Тогда как на оборудовании с прямым порядком байтов (например, x86) оно будет храниться следующим образом:
00000101 00000000
Поскольку UTF-8 полностью состоит из потока байтов, порядок байтов никогда не принимается во внимание. Да, существуют кодовые точки, для представления которых требуется несколько байтов, но чтение и запись этих кодовых точек по-прежнему необходимо выполнять по одному байту за раз. Порядок этих байтов четко определен, и порядок байтов оборудования не имеет значения.
Да. Вы поняли это правильно. Порядок байтов имеет значение , если у вас utf-16 .