내 대답은 필요한 모든 정보를 포함 HelloSam의 한을 기반으로합니다. OP가 요구하는 것은 BOM이 파일로 내보내 지는지 확인하는 것입니다.
그래서 대신에 당신이 진정한 통과해야 UTF8Encoding의 ctor에 거짓 전달합니다.
using (var sw = new StreamWriter("text.txt", new UTF8Encoding(true)))
는 BOM 포함 않는하지 어느 헥스 편집기에서 생성 된 파일을 열어 볼, 아래의 코드를 사용해보십시오.
class Program
{
static void Main(string[] args)
{
const string nobomtxt = "nobom.txt";
File.Delete(nobomtxt);
using (Stream stream = File.OpenWrite(nobomtxt))
using (var writer = new StreamWriter(stream, new UTF8Encoding(false)))
{
writer.WriteLine("HelloПривет");
}
const string bomtxt = "bom.txt";
File.Delete(bomtxt);
using (Stream stream = File.OpenWrite(bomtxt))
using (var writer = new StreamWriter(stream, new UTF8Encoding(true)))
{
writer.WriteLine("HelloПривет");
}
}
출처
2014-03-19 19:31:27
Nik
기술적으로 UTF-8로 허용되지만 BOM은 유니 코드에서 필수 또는 권장하지 않습니다 (참고 자료 [참조] (http://www.unicode.org/versions/Unicode5.0.0/ch02.pdf 참조).)). 한 가지는 UTF-16과는 달리 쓸모없는 것입니다. UTF-8 바이트 순서는 표준에 의해 지정됩니다. 또 다른 이유로는 텍스트 처리를 망칠 수 있습니다. 예를 들어, XML 프롤로그 앞에 문자가 있으면 많은 XML 파서가 질식합니다. –
UTF8을 지정 하시겠습니까? 당신이 그것을 지정하지 않으면, 그것은 여전히 UTF8을 쓰기하지만, 유니 코드 표준 5.0부터 BOM – xanatos
하지 않고 있기 때문에 : * 유니 코드 표준은 또한 에게 명시 적으로 BIG-차별화 초기 바이트 순서 표시 (BOM)의 사용을 지정합니다 엔디안 인코딩 스키마의 엔디안 또는 리틀 엔디안 데이터 * –