C# Xdocument-如何转换非html安全字符
我在UTF-8XML的元素中有一个“title”属性,例如C# Xdocument-如何转换非html安全字符,c#,xml,linq-to-xml,C#,Xml,Linq To Xml,我在UTF-8XML的元素中有一个“title”属性,例如 <tag title="This is some test with special chars §£" /> 像&和“这样的字符是转义的,但§”不是,因为它们是有效的utf-8字符。 我应该更改什么?可能是您可以手动解码这些字符。我以前用过这个 Dictionary<string, char> HTMLSymbolMap = new Dictionary<string, char>()
<tag title="This is some test with special chars §£" />
像&和“这样的字符是转义的,但§”不是,因为它们是有效的utf-8字符。
我应该更改什么?可能是您可以手动解码这些字符。我以前用过这个
Dictionary<string, char> HTMLSymbolMap = new Dictionary<string, char>()
{
{"–",'–'},
{"—",'—'},
{"‘",'‘'},
{"’",'’'},
{"‚",'‚'},
{"“",'“'},
{"”",'”'},
{"•",'•'},
{"·",'·'},
{"„",'„'},
{"£",'£'},
{"§",'§'},
};
public string CleanJunk(string docText)
{
foreach (var kv in HTMLSymbolMap)
{
docText = docText.Replace(kv.value.tostring(), kv.key);
}
return docText;
}
Dictionary HTMLSymbolMap=newdictionary()
{
{"–",'–'},
{"—",'—'},
{"‘",'‘'},
{"’",'’'},
{"‚",'‚'},
{"“",'“'},
{"”",'”'},
{"•",'•'},
{"·",'·'},
{"„",'„'},
{"£",'£'},
{"§",'§'},
};
公共字符串(字符串docText)
{
foreach(HTMLSymbolMap中的var kv)
{
docText=docText.Replace(kv.value.tostring(),kv.key);
}
返回docText;
}
有关更多信息,请参阅此页。如果页面声明为UTF-8,则HTML中支持UTF-8字符。 您应该始终指定编码 用于HTML或XML页面。如果 不要,你要冒这个险 您的内容不正确 解释。这不仅仅是一个问题 对人类可读性的要求越来越高 机器需要理解您的数据 你也应该检查一下 没有指定不同的编码 在不同的地方 如果页面的默认编码是范围较小的字符集,则不会正确呈现所有UTF-8字符。但是,如果文档声明为UTF-8,则它们应该显示良好 而不是用实体引用替换字符 有多种方法可以做到这一点:
。我不知道它是否会“有害”“使用两个元标记,以覆盖您的基础。这听起来很有趣,但是从快速测试来看,至少ffox完全忽略了元标记,直接进入内容类型
标题编码。我想我需要改变这一点,没有办法绕过标题?
new XElement( "tag",
new XAttribute( "title" , title)
);
Dictionary<string, char> HTMLSymbolMap = new Dictionary<string, char>()
{
{"–",'–'},
{"—",'—'},
{"‘",'‘'},
{"’",'’'},
{"‚",'‚'},
{"“",'“'},
{"”",'”'},
{"•",'•'},
{"·",'·'},
{"„",'„'},
{"£",'£'},
{"§",'§'},
};
public string CleanJunk(string docText)
{
foreach (var kv in HTMLSymbolMap)
{
docText = docText.Replace(kv.value.tostring(), kv.key);
}
return docText;
}