Вы не хотели бы, чтобы это использовалось для каждый вызов к GetBytes, иначе у Вас не будет способа (говорят) что запись файла строки за один раз.
Путем представления его с GetPreamble, вызывающие стороны могут вставить преамбулу только в соответствующей точке (т.е. в начале их данных). Я соглашаюсь, что документация могла быть намного более четкой все же.
Спасибо вам обоим. Следующие работы и LINQ делают комбинацию простой :-)
UTF8Encoding enc = new UTF8Encoding(true);
byte[] data = enc.GetBytes("a");
byte[] combo = enc.GetPreamble().Concat(data).ToArray();
Обратите внимание, что в целом, Вам не нужен Порядок байтов Mark для UTF-8 так или иначе. Это - основная цель, должен сказать UTF16 БЫТЬ и UTF16 LE независимо. Нет такой вещи как UTF8 LE и UTF8 БЫТЬ.
Поскольку ожидается, что GetBytes()
будет назван большим количеством времен... необходимо использовать:
byte[] preamble = enc.GetPreamble();
(только называют его в начале последовательности) и пишут это; это - то, где BOM живет.