XML输出错误的编码格式
XML output wrong encoding format
我正在获取一个 XML 提要并得到错误的字符编码(我认为)。
XML 提要带有斯堪的纳维亚字母,例如“æøå”,输出不显示这些,而是显示为:“ÆÔ等
我正在使用 XDocument 来解析 XML 字符串,并为其提供了以下声明:
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>
问题出在您的下载上。根据 the docs 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);
}
我正在获取一个 XML 提要并得到错误的字符编码(我认为)。
XML 提要带有斯堪的纳维亚字母,例如“æøå”,输出不显示这些,而是显示为:“ÆÔ等
我正在使用 XDocument 来解析 XML 字符串,并为其提供了以下声明:
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>
问题出在您的下载上。根据 the docs 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);
}