【发布时间】:2015-08-21 08:53:53
【问题描述】:
我现在有一个带有德语变音符号(如下)的 xaml,当我尝试解析它时,我收到一个 invalidchar 错误。
当我不使用 XamlParser 上下文时,它可以工作。但是我必须使用它来设置一些类型映射
XAML:
<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:test="clr-namespace:BR.UI.Tests.Items;assembly=BR.UI.ViewLocator.Tests"
mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300">
<UserControl.DataContext>
<test:SampleViewModel />
</UserControl.DataContext>
<Grid>
<Label>ö</Label>
</Grid>
</UserControl>
解析它的代码
var context = new ParserContext();
var result = System.Windows.Markup.XamlReader.Parse(xaml,context);
我找不到任何东西来设置编码提示(这将是 .net String UTF-16)我做错了什么?
我还尝试使用 XmlParserContext 注入编码。
var xmlcontext = new XmlParserContext(null, null, null, XmlSpace.Preserve,
Encoding.Unicode);
var context = new ParserContext(xmlcontext);
但这并没有帮助:-(
我需要做什么?是否有某种 XAML 编码?
【问题讨论】:
-
xaml 只是 xml;您是否尝试过在开始时添加(因为您说它是 UTF-16)
<?xml version="1.0" encoding="UTF-16"?>?当然,我假设它 是 实际上是 UTF-16... -
当您保存 XAML 文件时,您是使用 8、16 还是 32 位编码保存的?见stackoverflow.com/questions/10186484/…
-
这只是一个 .net 字符串,所以我假设为 UTF-16。顺便说一句,当我使用 XamlReader.Load(Stream...) 时有效。真的很奇怪的行为:-(
-
你试过xml编码吗(例如ö)?
-
您不需要上下文来识别 XAML 中的变音符号 - 解析的代码的第二行上的变量 xaml(必须是作为字符串的 XAML)的内容是什么它'?我想问题与您在 XML 中读取以填充变量“xaml”的方式有关。
标签: c# wpf encoding xamlparseexception xamlreader