2012-07-31 2 views
2

Windows Phone 응용 프로그램에서 WebClient.OpenReadAsync()로 다운로드 한 xml을 읽으려고합니다. 문제는 때때로 XML이 UTF8 인코딩으로 제공되지 않는다는 것입니다. "ISO-8859-1"과 같은 다른 인코딩이있을 수 있으므로 악센트가 엉망이됩니다. Windows Phone에서 스트림 또는 바이트 배열 인코딩 감지

내가 완벽하게 코드를 사용하여 ISO-8858-1 XMLS 중 하나를로드 할 수 있었다 :

var buff = e.Result.ReadFully(); //Gets byte array from the stream 
var resultBuff = Encoding.Convert(Encoding.GetEncoding("ISO-8859-1"), Encoding.UTF8, buff); 
var result = Encoding.UTF8.GetString(resultBuff, 0, resultBuff.Length); 

그것은 ISO-8859-1로 아름다운 작품을 텍스트 완벽 한 듯했지만, 그것은 엉망 UTF8 xml.

바이트 배열이나 스트림을 인코딩하기 전에이 인코딩을 감지 한 다음 UTF8이 아닌 경우 감지 된 인코딩을 사용하여 위의 방법으로 데이터를 변환합니다.

인터넷에서 인코딩을 감지 할 수있는 방법을 찾고 있는데 어떤 것도 찾을 수 없습니다! Windows Phone에서 이런 종류의 작업을 수행 할 수있는 방법을 알고있는 사람이 있습니까?

감사합니다.

+0

전체 소스 코드 샘플을 사용하는 최종 해결책이 있습니까? – Kiquenet

답변

0

WebClient.ResponseHeaders 속성에서 "Content-Type"값을 찾을 수 있습니다. 운이 좋다면 서버가 미디어 유형과 인코딩 (예 : "text/html; charset = ISO-8859-4")을 나타내도록 서버를 설정하고 있습니다.

+0

아름답게 일했습니다! 나는 utf-8이 아니면 charset을 추출한 다음 charset에서 Encoding을 가져 와서 변환했습니다! 대단히 감사합니다! –