2011-03-18 1 views

답변

11

전혀 차이가 없습니다.

UTF8Encoding입니다. MSDN (Encoding.UTF8)에서

:

이 속성을 사용하면 간단하게 UTF8Encoding.GetBytes를 호출 할 수 있습니다

대신 UTF8Encoding.UTF8.GetBytes의 UTF8Encoding 개체를 반환합니다.

+0

이 좋은 설명을 한 – Aidiakapi

+0

부여 설명서를하지만, 현재의 문서 (.NET 프레임 워크 4.5)는 '에 해당 말한다 : 이것 좀 봐 새로운 UTF8Encoding (true)'을 실행하면 BOM이 방출됩니다. – Stijn

+0

또한, @ JonHanna의 답변은 실제 질문을 더 잘 표현한 것 같습니다 : 'UTF8Encoding.UTF8'이'Encoding.UTF8'과 다른지. – Stijn

3

이들은 UTF8Encoding 클래스에 액세스하고 정적 멤버 GetBytes을 호출하는 두 가지 다른 방법 일뿐입니다.

6

UTF8Encoding은 정적 UTF8 속성을 Encoding에서 상속하므로 실제로 동일한 속성입니다.

+0

그 수업의 디자인에 뭔가 잘못 됐나 봅니다. 'UTF8Encoding.ASCII'를 호출하는 능력이 이상하게 보입니다. – Stijn

+0

@ Stijn 끔찍하지 않습니다. 한 가지 이유는 무엇입니까? (왜 UTF8Encoding.UTF8을 호출해도 좋을까요?), 또 다른 "인코딩에 대한 지식"은 특정 인코딩의 개념적 역할에 해당하므로 "여기"에서 "거기"로 이동할 수 있습니다. 두려운 것은 아니다. –

+0

물론 그렇게하지 않겠지 만 클래스 소비자에게 혼란을 야기합니다. 인코딩은 이미 복잡한 주제이므로 imho는 필자의 이해가 정확하다는 것을 확인하기 위해 인터넷에서 문서 및 기타 리소스를 철저히 읽어야하는 불편한 디자인을 나타냅니다. – Stijn

6

적어도 하나의 차이점이 있습니다. Encoding.UTF8은 UTF8Encoding이 (기본적으로) 수행되지 않는 동안 BOM을 작성합니다. 그것을 언급하지 않았다 시간 (.NET 프레임 워크 4)에서

using System; 
using System.Text; 

class UTF8EncodingExample { 
    public static void Main() { 
     UTF8Encoding utf8 = new UTF8Encoding(); 
     UTF8Encoding utf8EmitBOM = new UTF8Encoding(true); 

     Console.WriteLine("utf8 preamble:"); 
     ShowArray(utf8.GetPreamble()); 

     Console.WriteLine("utf8EmitBOM:"); 
     ShowArray(utf8EmitBOM.GetPreamble()); 

     Console.WriteLine("Encoding.UTF8 preamble:"); 
     ShowArray(Encoding.UTF8.GetPreamble()); 
    } 

    public static void ShowArray(Array theArray) { 
     foreach (Object o in theArray) { 
      Console.Write("[{0}]", o); 
     } 
     Console.WriteLine(); 
    } 
} 
+0

나는 그 점이 다르다는 것을 알고 있었지만 BOM을 작성하는 것을 기억하지 못했습니다. 감사! –

+0

정적'.UTF8' 속성은 Encoding에서 호출되었는지 UTF8Encoding에서 호출되었는지에 관계없이 기본 생성자를 사용합니다. – Nyerguds

관련 문제