2

Windows Phone アプリケーションで WebClient.OpenReadAsync() を使用してダウンロードした xml を読み込もうとしています。問題は、xml に UTF8 エンコーディングが含まれていない場合があり、「ISO-8859-1」などの他のエンコーディングが含まれている可能性があるため、アクセントが台無しになることです。

次のコードを使用して、ISO-8858-1 xml の 1 つを完全に読み込むことができました。

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 でこのようなことを行う方法を知っている人はいますか?

ありがとう!

4

1 に答える 1

0

WebClient.ResponseHeaders プロパティで「Content-Type」値を探すことができます。運が良ければ、サーバーはメディアの種類とそのエンコーディングを示すように設定しています (例: "text/html; charset=ISO-8859-4")。

于 2012-07-31T03:00:01.043 に答える