检测Windows Phone上的流或字节数组编码

时间:2012-07-31 02:34:16

标签: c# xml silverlight encoding windows-phone

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

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

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 xmls。

所以,这里的想法是在执行此操作之前检测字节数组或流的编码,然后如果它不是UTF8,它将使用上述方法使用检测到的编码转换数据。

我正在寻找一些可以在互联网上检测编码但我找不到的方法! 有人知道我怎么能在Windows Phone上做这种事情吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以在WebClient.ResponseHeaders属性中查找“Content-Type”值;如果您很幸运,服务器会将其设置为指示媒体类型及其编码(例如“text / html; charset = ISO-8859-4”)。