UTF-8 имеет фиксированный порядок байтов
Я слышал, что мне не нужно размещать спецификацию в начале файла / потока UTF-8.
Есть ли у него фиксированный порядок байтов?
А как насчет UTF-16 и UTF-32 в этом случае?
1 ответ
UTF-8 не нуждается в порядке байтов, поскольку он определяется в терминах потока байтов. Порядок дается непосредственно по адресу отдельного байта. Различное количество байтов составляет одну кодовую точку.
UTF-32, с другой стороны, определяется в терминах потока из 32-битных блоков (т.е. по 4 байта каждый, каждый из которых отображается непосредственно в кодовую точку Unicode), который может кодироваться различными способами в поток байтов.
Это то, что спецификация указывает для вас, в основном, упорядочены ли байты с их значением (т. Е. Самый младший байт в потоке является наименее значимым, с прямым порядком байтов) или против него (т. Е. Самый ранний байт является наиболее значимым, старшим байтом),
UTF-16 похож, но немного веселее. Он определяется как поток из 16-битных блоков, поэтому вам нужно беспокоиться о порядке следования байтов. Кроме того, поскольку одного 16-битного блока (больше) недостаточно для кодирования всего Unicode, это также кодирование с несколькими "блоками", объединяющее, таким образом, недостатки UTF-8 и UTF-32:)