2017-10-26 12 views
3

나는이와 함께 HTTP POST 요청을 만들고있어. StreamWriter으로 로컬 파일을 만들 때, WITHOUT BOM을 쓰려면 항상 new UTF8Encoding (false)과 같은 기본 인코딩을 사용하십시오. 따라서 GetBytes() 메서드를 호출해도 마찬가지인지 궁금합니다.Encoding.UTF8.GetBytes()가 BOM을 생성합니까? <pre><code>byte[] postBuffer = Encoding.UTF8.GetBytes(postStr); </code></pre> <p></p>는 지금까지이 잘 작동 보이지만 <strong>Encoding.UTF8</strong>가 BOM 함께 UTF8을 의미하기 때문에 나는이 항상 작동하는지 확실하지 않다 :

위의 경우와 아래의 경우에는 차이가 있습니까?

byte[] postBuffer = new UTF8Encoding().GetBytes(postStr); 

나는 여러 번 테스트했지만 100 % 확신 할 수 없으므로 여기에서 질문합니다.

+1

귀하의 질문에 대한 답변입니까? https://stackoverflow.com/a/4414118/2395747 – wmioduszewski

+2

그것이 의미하는 바가 아닙니다. Windows에서 BOM은 파일에 대해 아무 것도 모르는 앱을 만들 때 파일을 올바르게 해석하는 데 매우 중요합니다. 양측이 스트림 내용에 대해 동의해야하기 때문에 네트워크 프로토콜의 경우는 아닙니다. http의 경우 헤더가 인코딩을 지정합니다. HttpWebResponse.ContentEncoding –

+0

@wmioduszewski에 감사드립니다. 그 답변도 도움이되었습니다. – Jenix

답변

3

GetBytes 메서드는 BOM이 붙은 바이트 스트림을 반환하지 않습니다. BOM은 GetPreAmble 메서드를 사용하여 검색 할 수 있습니다.이 메서드는 인코더가 false로 인스턴스화 될 때 아무 것도 반환하지 않습니다.

자세한 내용은 MSDN의 광범위한 비고 섹션을 참조하십시오.

+0

내가보기에 이것은 많은 도움이된다. 고맙습니다. – Jenix