2

BIG5エンコーディング段落のあるウェブページにアクセスしようとしています。xmlデータを取得した後、XMLRead.Create(new StringReader(xmldata))を使用して、XmlNodeType.Textタイプのreader.Valueからbig5文字を取得します。WPランタイムでは、BIG5エンコーディングをサポートしていないため、WP7で表示するには、各バイトを取得してUnicodeに変換する必要があります。ただし、reader.Valueから取得したバイトは期待したものではないようです。たとえば、最初の漢字はB5E1です。しかし、私はFDFDを手に入れました。何が問題なのですか?

using (XmlReader reader = XmlReader.Create(new StringReader(xmldata)))  
while (reader.Read())  
    switch (reader.NodeType)  
        case XmlNodeType.Text:
            string s = reader.Value;  
            foreach (byte input in s)  
                # the input gives unexpected result  

ロードするウェブページはhttp://feeds.feedburner.com/nownews/politicです。

WP7の開発作業にVS2010を使用しています。

どんな助けでも大歓迎です!

4

2 に答える 2

1

Windows Phone SDKはBIG5エンコーディングをサポートしていませんが、必要な場合は、先に進んで、SilverlightEncodingGeneratorを使用してエンコーディングクラスを生成してください。

于 2012-04-24T09:10:26.547 に答える
1

エンコーディングは、バイトストリームが.Net文字列に変換される方法を定義します。BIG5エンコーディングを適用できないため、.NetはデフォルトのエンコーディングまたはXMLファイルで指定されたエンコーディングのいずれかを選択します。

その結果、XmlReaderを解析すると、translation bytes => stringが既に実行され、foreach(byte in string)が誤って変換された文字列の.Net表現を繰り返し処理します。

APIのこれらの部分は使用していませんが、ここで説明するXmlReaderメソッドは、XMLノードの背後にある元のバイトストリームを取得するためのもののようです。

于 2012-04-24T10:23:22.467 に答える