Hug*_*ron 10 .net c# string encoding iso
根据以下对表为ISO-8859-1标准,似乎有一个实体的名称,并保留每个HTML字符相关联的实体数量.
例如,对于角色é:
实体名称 : é
实体编号: é
同样,对于角色>:
实体名称 : >
实体编号: >
对于给定的字符串,HttpUtility.HtmlEncode返回一个HTML编码的String,但我无法弄清楚它是如何工作的.这就是我的意思:
Console.WriteLine(HtmlEncode("é>"));
//Outputs é>
Run Code Online (Sandbox Code Playgroud)
它似乎使用了é字符的实体编号,但是字符的实体名称>.
那么HtmlEncode方法真的适用于ISO-8859-1标准吗?如果确实如此,是否有理由说它有时使用实体名称而有时使用实体编号?更重要的是,我可以强制它可靠地给我实体名称吗?
编辑: 谢谢你们的答案.我执行搜索之前无法解码字符串.在没有太多细节的情况下,文本存储在SharePoint列表中,"搜索"由SharePoint本身完成(使用CAML查询).所以基本上,我不能.
我试图想出一种将实体数字转换为名称的方法,.NET中是否有一个函数可以做到这一点?还是其他任何想法?
这就是该方法的实现方式。对于某些已知字符,它使用相应的实体,对于其他所有字符,它使用相应的十六进制值,并且您无法做太多修改此行为。摘录自实施System.Net.WebUtility.HtmlEncode(如反射器所示):
...\nif (ch <= \'>\')\n{\n switch (ch)\n {\n case \'&\':\n {\n output.Write("&");\n continue;\n }\n case \'\\\'\':\n {\n output.Write("'");\n continue;\n }\n case \'"\':\n {\n output.Write(""");\n continue;\n }\n case \'<\':\n {\n output.Write("<");\n continue;\n }\n case \'>\':\n {\n output.Write(">");\n continue;\n }\n }\n output.Write(ch);\n continue;\n}\nif ((ch >= \'\\x00a0\') && (ch < \'\xc4\x80\'))\n{\n output.Write("&#");\n output.Write(((int) ch).ToString(NumberFormatInfo.InvariantInfo));\n output.Write(\';\');\n}\n...\nRun Code Online (Sandbox Code Playgroud)\n\n话虽如此,您不必关心,因为此方法将始终生成有效、安全且编码正确的 HTML。
\n