2014-06-12 12 views
2

외부 도구에서 사용하는 XML 파일을 저장하고 있습니다. 파일의 시작 부분에 :XML 저장시 BOM이 적용되지 않습니다.

<?xml version="1.0" encoding="UTF-8"?> 
... 

00000000h: EF BB BF 3C 3F 78 6D 6C 20 76 65 72 73 69 6F 6E <?xml version 
00000010h: 3D 22 31 2E 30 22 20 65 6E 63 6F 64 69 6E 67 3D ="1.0" encoding= 
00000020h: 22 55 54 46 2D 38 22 3F 3E ...     "UTF-8"?> 

내 코드 :

XmlDocument doc = new XmlDocument(); 
// Stuff... 
using (TextWriter sw = new StreamWriter(file, false, Encoding.UTF8)) { 
    doc.Save(sw); 
} 

질문 :
방법 :
이 도구는 슬프게도 인코딩 BOM (EF BB BF 바이트 순서 표시)를 이해하지 못하는 TextWriter에 BOM을 쓰지 않게 할 수 있습니까?

답변

2

Encoding.UTF8 대신 BOM을 사용하지 않는 UTF8Encoding 인스턴스를 만들 수 있습니다. 당신이 반복적으로 인스턴스화하는 비용에 대해 걱정하는 경우

using (TextWriter sw = new StreamWriter(file, false, new UTF8Encoding(false))) { 
    doc.Save(sw); 
} 

당신은 정적 필드에이를 저장할 수 있습니다

private static readonly Encoding UTF8NoByteOrderMark = new UTF8Encoding(false); 

... 

using (TextWriter sw = new StreamWriter(file, false, UTF8NoByteOrderMark)) { 
    doc.Save(sw); 
} 
+0

내가 감동 - 2 분 이내에 답을 설명. 틀림없이 '불타는 키보드 (Burning Keyboard)'황금 배지를 소지하고 계실 것입니다! – joe