2011-12-26 3 views
2
나는 웹 페이지를 다운로드 할 필요가

에서 페이지 가져 오기, 나는 인코딩인코딩 순

   System.IO.StreamReader sr=null; 

       mFrm.InfoShotcut("Henter webside...."); 
       if(response.ContentEncoding!=null && response.ContentEncoding!="") 
       { 
        sr=new System.IO.StreamReader(srm,System.Text.Encoding.GetEncoding(response.ContentEncoding)); 
       } 
       else 
       { 
        //System.Windows.Forms.MessageBox.Show(); 
        sr=new System.IO.StreamReader(srm,System.Text.Encoding.GetEncoding(response.CharacterSet)); 
       } 

       if(sr!=null) 
       { 
        result=sr.ReadToEnd(); 

        if(response.CharacterSet!=GetCharatset(result)) 
        { 
         System.Text.Encoding CorrectEncoding=System.Text.Encoding.GetEncoding(GetCharatset(result)); 

         HttpWebRequest client2=(HttpWebRequest)HttpWebRequest.Create(Helper.value1); 

         HttpWebResponse response2=(HttpWebResponse)client2.GetResponse(); 

         System.IO.Stream srm2=response2.GetResponseStream(); 

         sr=new System.IO.StreamReader(srm2,CorrectEncoding); 

         result=sr.ReadToEnd(); 
        } 
       } 

       mFrm.InfoShotcut("Henter webside......"); 
      } 
      catch (Exception ex) 
      { 
       // handle error 
       MessageBox.Show(ex.Message); 
      } 

에게 determe하는 코드를 다음했다 그리고 그것은 좋은 일을했지만, 지금은 사이트, 그것을 그것을 시도 할 때 그것이 사용하는 상태

<pre> 
&lt;META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
</pre> 

실제로는 UTF-8로, 어떻게 올바른 인코딩으로 파일을 저장할 수 있는지 알 수 있습니까?

+0

이렇게 많은 사이트가 있습니다. 인코딩을 '추측'할 수있는 방법을 찾아야합니다. –

답변

1

첫째로, Content-Encoding 헤더는 사용중인 문자 집합을 설명하지 않습니다. RFC가 말하기를 :

내용 코딩은 주로 문서를 압축하거나 유용의 기본 미디어 유형의 정보의 손실없이 정체성을 잃지 않고 변환 할 수 있도록하는 데 사용됩니다.

사용 된 문자 집합은 Content-Type 헤더에 설명되어 있습니다. 예를 들어 : 그 위의

Content-Type: text/html; charset=UTF-8 

코드는 올바르게 문자 집합을 식별하지 않습니다 Content-Encoding 헤더를 사용합니다. Content-Type 헤더를보고 거기에 세미콜론이 있으면 charset 매개 변수를 구문 분석해야합니다.

귀하가 발견 한 것처럼이 태그는 HTML META 태그로도 설명 될 수 있습니다.

또는 문자 세트 정의가 전혀 없을 수도 있습니다.이 경우 문자를 기본값으로 설정해야합니다. 내 경험으로 UTF-8을 기본값으로 설정하는 것이 좋은 선택입니다. 100 % 신뢰도는 아니지만 매개 변수 (Content-Type 필드, , 보통)가 포함되지 않은 사이트는 기본적으로 UTF-8로 간주됩니다. 나는 또한 META 태그가 존재할 때 거의 절반의 시간이 잘못되었음을 발견했습니다.

L.B는 그의 의견에서 언급했듯이 바이트를 다운로드하여 인코딩을 결정할 수 있습니다. 놀라운 정확도로 수행 할 수 있지만 많은 코드가 필요합니다.