c# - 在 Windows Phone 上检测流或字节数组编码

标签 c# xml silverlight encoding windows-phone

我正在尝试读取我在 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/

相关文章:

c# - 如何在c# windows应用程序中创建动态调整动态创建的datagridview的列宽度

c# - 了解 .NET 堆栈跟踪中的堆栈跟踪注释结尾

java - EL表达式只显示在特定的JSP页面上

c# - 如何编写或生成 XML 文件

silverlight - 是否可以在 Silverlight DataTemplate 中绑定(bind)事件?

Silverlight 4 - RIA 服务 - 这是很好的编码实践吗?

c# - 如何更改 MVC 4 Web 应用程序中的默认 View

c# - 获取最后 2 位小数,不四舍五入

java - 如何在jsp页面中获取像${Some}这样的JSTL标签,但Some不是一个值

silverlight - 当用户未在 Windows Phone 7 上登录 Facebook 时出现 HTTP 500 错误