2

我正在尝试在 Windows Phone 应用程序中读取使用 WebClient.OpenReadAsync() 下载的 xml。问题是,有时,xml 不会带有 UTF8 编码,它可能带有其他编码,例如“ISO-8859-1”,因此重音变得混乱。

我能够使用以下代码完美加载 ISO-8858-1 xml 之一:

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 回答