Windows Phone 8 SDK WebClient 인코딩 문제

c# html-agility-pack visual-studio-2010 windows-phone-7 windows-phone-8

문제

Windows-1254 charset을 사용하여 사이트에서 html을 구문 분석하려고합니다. 하지만이 모든 터키 문자는 다음과 같습니다 : � � � � �

실제 문제는 어디에 있습니까? 나는 이것을 시도했다 :

webClient.Encoding = System.Text.Encoding.UTF8
webClient.Encoding = System.Text.Encoding.GetString("UTF-8");

이 함수로서 :

public string ReplaceText(string _text)
        {
            _text = _text.Replace("Ä°", "Ä°").Replace("ı", "ı").Replace("ü", "ü").Replace("ÅŸ", "ÅŸ").Replace("Ã…", "Åž").Replace("ç", "ç").Replace("ö", "ö").Replace("ÄŸ", "ÄŸ").Replace("Ç", "Ç").Replace("Ö", "Ö").Replace("Ãœ", "Ãœ");
            return _text;
        }

이 헤더들 :

webClient.Headers["User-Agent"] = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)";
webClient.Headers["Accept-Charset"] = "windows-1254,utf-8;q=0.7,*;q=0.7";

(iso-8859-9, utf8도 있음)

그리고 이것은 웹 클라이언트를 사용하는 방법입니다.

WebClient wb = new WebClient();         
            wb.Headers["User-Agent"] = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)";
            wb.Headers["Accept-Charset"] = "windows-1254,utf-8;q=0.7,*;q=0.7";
            wb.DownloadStringAsync(new Uri("http://www.site.com"));
            wb.Encoding = System.Text.Encoding.UTF8;
            wb.DownloadStringCompleted += new DownloadStringCompletedEventHandler(DSC);

매니저:

HtmlDocument htmlDoc = new HtmlDocument();

            htmlDoc.LoadHtml(e.Result);

            var inputs = htmlDoc.DocumentNode.SelectNodes("//div[@id=\"mrln-eyhaber\"]//a");

            foreach (var input in inputs)
            {

                textarea.Text += this.ReplaceText(input.Attributes["title"].Value.ToString()) + "\n\n";
            }

수락 된 답변

표준 접근법을 사용하는 대신에, 왜 당신은 자신의 필요에 맞는 맞춤 클래스를 만들지 않아도됩니다.

이렇게 하면 다음과 같이 클래스를 생성하는 데 도움 됩니다. 여기에 이미지 설명을 입력하십시오.

그런 다음해야 할 일 모두

webClient.Encoding = CustomEncoding();

그것이 어떻게되는지 알려주세요 (:


인기 답변

왜 Windows-1254를 알면 Encoding을 UTF-8로 설정 했습니까? 수정은 비교적 쉽습니다. WebClient 에서 올바른 인코딩을 설정하기 만하면됩니다.

wb.Encoding = Encoding.GetEncoding(1254);

또는

wb.Encoding = Encoding.GetEncoding("windows-1254");

또한 ReplaceText 메서드는 더 이상 필요하지 않습니다.

편집 : 물론, 윈도우 폰은 그 인코딩을 지원하지 않습니다. utf-8 또는 utf-16 이외의 다른 인코딩을 직접 구현해야합니다. 다행히도 쉽게 할 수있는 방법이 있습니다. 여기 에 설명 된 programm을 사용하여 고유 한 인코딩 클래스를 생성하면됩니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.