Windows Phone 8 SDKのWebClientエンコーディングの問題

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

質問

私は、Windows-1254文字セットを使ってサイトから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を使用している方法です:

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が分かっている場合、エンコーディングをUTF-8に設定したのはなぜですか?修正は簡単ですが、 WebClient正しいエンコーディングを設定するだけです。

wb.Encoding = Encoding.GetEncoding(1254);

または

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

また、 ReplaceTextメソッドはもはや必要ではありません。

編集:もちろん、Windows Phoneはそのようなエンコーディングをサポートしていません。utf-8またはutf-16以外のエンコーディングを実装する必要があります。幸運にも、簡単な方法があります。独自のエンコーディングクラスを生成するには、 ここで説明したプログラムを使用するだけです。



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ