我正在尝试读取我在 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 xmls。
所以,这里的思路是在做这件事之前检测字节数组或流的编码,如果不是UTF8,它会使用检测到的编码使用上面的方法转换数据。
我正在寻找一些可以在互联网上检测编码的方法,但我找不到任何方法! 有人知道我如何在 Windows Phone 上做这种事情吗?
谢谢!
最佳答案
您可以在 WebClient.ResponseHeaders 属性中查找“Content-Type”值;如果幸运的话,服务器会将其设置为指示媒体类型及其编码(例如“text/html; charset=ISO-8859-4”)。
关于c# - 在 Windows Phone 上检测流或字节数组编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11732324/