2009-12-18 4 views
3

바이트 배열을 문자열로 변환하려고합니다. 바이트 배열에는 프리앰블 (사용 된 엔코더 중 하나가 포함 된 경우)이 포함되어 있으며 바이트 배열에 프리앰블이 저장되지 않은 경우 기본 인코딩을 지정해야합니다.C# 프리앰블 또는 기본 인코딩을 사용하여 바이트 배열을 문자열로 변환

내 코드는이

public static string ArrayToStringUsingPreambleOrDefaultEncoder(byte[] bytes, Encoding defaultEncoder, out Encoding usedEncoder) { 
    using (var mem = new MemoryStream(bytes)) 
    using (var reader = new StreamReader(mem, defaultEncoder, true)) { 
    string result = reader.ReadToEnd(); 
    usedEncoder = reader.CurrentEncoding; 
    return result; 
    } 
} 

같습니다 그러나 내가 예상하는대로 트릭을 할 나던. Preamble이 없으면 Preamble 또는 기본 인코딩으로 지정된 인코딩을 StreamReader에서 사용하게하려면 어떻게해야합니까? 모든 알려진 인코더의 프리앰블을 배열의 시작 부분과 직접 비교하여 올바르게 찾아야합니까?

답변

2

MSDN : "StreamReader는 특정 인코딩의 문자 입력 용으로 설계되었습니다." 그래서 네, 당신은 정말로 이것을하기 위해 전문에서 올바른 인코딩을 알아 내야 할 필요가 있습니다. 여기에이 작업을 수행하는 방법의 예는있다 :

http://www.personalmicrocosms.com/Pages/dotnettips.aspx?c=15&t=17

+2

깨진 링크, 어디서, 코드하시기 바랍니다입니까 ?? –

관련 문제