Настя
Настя

Вопрос по BinaryWriter c#

Использую метод Write(txt) для записи в текстовый файл, всё норм, только первым символом всегда стоит какая-то козявка(), её точно нету в строке, которую я даю на запись. Подскажите как избавиться от этой мерзости?

ИП
Ирина Петрашова

Козявка это byte order mark BOM 🙂

Нужно создать кодировку которая исключает использование BOM для UTF8. А потом с ней открыть StreamWriter.
А вот пример, правда на VB но суть понятна.

Dim utf8WithoutBom As New System.Text.UTF8Encoding(False)

Using sink As New StreamWriter("Foobar.txt", False, utf8WithoutBom)
sink.WriteLine("...")
End Using

Ну либо указать кодировку CP1251 и писать по одному байту на букву, там не будет BOM.

ЛГ
Людмила Григорян

BinaryWriter - не для записи обычно текста
Надо записывать массив байт тогда в файл
.Write(buffer, 0, buffer.Length);
А если обычную строку писать, то там системные байты в начале

Похожие вопросы
вопрос по C#, FileStream.Read()
Вопрос по C/C++ Как разделить текст?
уточняю вопрос по C#
Вопрос по Visual C++
Вопрос программистам (C++)
C#, вопрос о методах.
Базовые вопросы по c++
Вопрос по программированию на C#.
Вопрос по структурам в C++
Вопрос по C++