Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Script C # usando StreamWriter cria caractere extra?


Um StreamWriter é para escrever texto a um córrego. Ele sempre usa uma codificação e, se você não especificar uma ao criá-la, usará UTF-8 (sem uma marca de ordem de byte - BOM). A saída que você obtém é o codificador UTF-8 tentando traduzir o texto (na forma de caracteres individuais) em UTF-8.

Se você deseja escrever bytes para um stream simplesmente escreva no stream diretamente usando o Write método que aceita uma matriz de bytes. Se você deseja gravar em um arquivo, pode criar um FileStream e use isso como o fluxo.

A nomenclatura de classes dentro do System.IO namespace pode ser confuso às vezes:
  • Stream é uma classe base abstrata que fornece métodos para ler e escrever bytes
  • FileStream é um Stream que lê e grava em um arquivo
  • BinaryWriter permite que você escreva tipos primitivos em formato binário em um Stream
  • TextWriter é uma classe base abstrata que permite escrever texto
  • StreamWriter é um TextWriter que permite escrever texto em um Stream

Você provavelmente deveria usar FileStream ou BinaryWriter em cima de um FileStream para resolver seu problema.