Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Xdocument-如何转换非html安全字符_C#_Xml_Linq To Xml - Fatal编程技术网

C# Xdocument-如何转换非html安全字符

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>()

我在UTF-8XML的元素中有一个“title”属性,例如

<tag title="This is some test with special chars §£" />
像&和“这样的字符是转义的,但§”不是,因为它们是有效的utf-8字符。
我应该更改什么?

可能是您可以手动解码这些字符。我以前用过这个

 Dictionary<string, char> HTMLSymbolMap = new Dictionary<string, char>()
        {
            {"&#8211;",'–'},
            {"&#8212;",'—'},
            {"&#8216;",'‘'},
            {"&#8217;",'’'},
            {"&#8218;",'‚'},
            {"&#8220;",'“'},
            {"&#8221;",'”'},
            {"&#8226;",'•'},
            {"&#183;",'·'},
            {"&#8222;",'„'},                
            {"&#163;",'£'},
            {"&#167;",'§'},

        };

   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,则它们应该显示良好

而不是用实体引用替换字符

有多种方法可以做到这一点:


有什么缺点吗?我在考虑IE/移动设备的兼容性。另外,你会推荐哪种方式?我会选择其中一种元标记,而不是最后一种,因为我认为它需要XHTML。首选方法取决于你正在创建的内容(即HTML 4、HTML 5、XHTML).HTML4-在head元素的顶部使用pragma指令。
。我不知道它是否会“有害”“使用两个元标记,以覆盖您的基础。这听起来很有趣,但是从快速测试来看,至少ffox完全忽略了元标记,直接进入
内容类型
标题编码。我想我需要改变这一点,没有办法绕过标题?
new XElement( "tag",
    new XAttribute( "title" , title)
);
 Dictionary<string, char> HTMLSymbolMap = new Dictionary<string, char>()
        {
            {"&#8211;",'–'},
            {"&#8212;",'—'},
            {"&#8216;",'‘'},
            {"&#8217;",'’'},
            {"&#8218;",'‚'},
            {"&#8220;",'“'},
            {"&#8221;",'”'},
            {"&#8226;",'•'},
            {"&#183;",'·'},
            {"&#8222;",'„'},                
            {"&#163;",'£'},
            {"&#167;",'§'},

        };

   public string CleanJunk(string docText)
    {


        foreach (var kv in HTMLSymbolMap)
        {
            docText = docText.Replace(kv.value.tostring(), kv.key);
        }

        return docText;

    }