Как написать текст в байтах (без кодирования) - PullRequest
2 голосов
/ 08 ноября 2010

Мне нужно создать файл, который будет прочитан другой системой.По этой причине он должен быть в двоичном формате, а не в тексте с некоторой кодировкой.

Вот код, который я использую:

        using (FileStream stream = new FileStream(fileName, FileMode.Create))
        {
            using (BinaryWriter writer = new BinaryWriter(stream))
            {
                writer.Write("Some text" + Environment.NewLine);
                writer.Write("Some more text" + Environment.NewLine);
            }
        }

Когда я открываю файл и смотрю на него, яв начале каждой строки можно увидеть какой-то специальный символ, похожий на этот (его трудно вставить здесь, поскольку он не показывает то же самое):

~ Некоторый текст

~ Ещетекст

Что я делаю не так / забыл?

Спасибо за вашу помощь.

1 Ответ

7 голосов
/ 08 ноября 2010

Нет такого понятия, как текст без кодировки. Это похоже на желание сохранить абстрактное изображение на диск без указания какого-либо формата изображения. (Даже «raw» - это своего рода кодировка изображений - вам нужно договориться о способе передачи ширины, высоты, порядка байтов, глубины цвета.)

Я предлагаю вам просто исправить одну кодировку (например, Encoding.Unicode или Encoding.UTF8) и написать текст таким образом.

Что касается того, почему BinaryWriter.Write(text) ставит "специальные символы" в начале каждой строки, проверяли ли вы документацию , что она делает?

Записывает строку с префиксом длины в этот поток в текущей кодировке BinaryWriter и перемещает текущую позицию потока в соответствии с используемой кодировкой и конкретными символами, записываемыми в поток.

и

Строка с префиксом длины представляет длину строки, добавляя к строке один байт или слово, содержащее длину этой строки. Этот метод сначала записывает длину строки в виде целого числа без знака в кодировке UTF-7, а затем записывает это количество символов в поток, используя текущую кодировку экземпляра BinaryWriter.

Итак, вы видите префикс длины ... но тогда он будет использовать любую кодировку, установленную для BinaryWriter.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...