我正在获取一个XML提要并获取错误的字符编码(我认为)。
XML附带了斯堪的纳维亚字母,例如“†”,输出没有显示这些字母,而是显示为“”等等。
我使用XDocument解析following,并给它以下声明:
xDocument.Declaration = new XDeclaration("1.0", "utf-8", null);当我在我的视图中输出XML时,我尝试过CultureInfo.InvariantCulture和Html.Raw等等,但是似乎没有什么效果。
希望你能帮上忙。
提前谢谢。
代码:
EventArchiveViewModel:
public IEnumerable<EventItemViewModel> EventItems
{
get
{
var list = new List<EventItemViewModel>();
var webClient = new WebClient();
var xmlString = webClient.DownloadString(EventArchiveModel.XmlFeedUrl);
var xDocument = XDocument.Parse(xmlString);
xDocument.Declaration = new XDeclaration("1.0", "utf-8", null);
foreach (var item in xDocument.Elements().Descendants("event")) {
list.Add(new EventItemViewModel(new EventItemModel(item)));
}
return list;
}
}下面是EventItemModel中的一个属性:
public string Name
{
get
{
return XmlElement.Descendants("name").FirstOrDefault().Value;
}
}以下是视图的一部分:
<div class="large-2 medium-6 columns">
<p class="text-headline_block">
@item.Name
</p>
</div>发布于 2016-06-06 08:44:29
问题是你的下载。每一个医生们都是WebClient的默认编码,不管Encoding.Default返回什么。
将其更改为Encoding.UTF8,您的字符串应该被正确解码。注意,没有必要对XML声明做任何事情,这与此无关。
var webClient = new WebClient
{
Encoding = Encoding.UTF8
};
var xmlString = webClient.DownloadString(EventArchiveModel.XmlFeedUrl);
var doc XDocument.Parse(xmlString);
foreach (var item in doc.Descendants("event"))
{
// ...
}还可以通过直接将流加载到DOM中来删除下载字符串的步骤:
using (var stream = webClient.OpenRead(EventArchiveModel.XmlFeedUrl))
{
var doc = XDocument.Load(stream);
}https://stackoverflow.com/questions/37652452
复制相似问题