首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >C# HtmlEncode - ISO-8859-1实体名称与编号

C# HtmlEncode - ISO-8859-1实体名称与编号
EN

Stack Overflow用户
提问于 2011-01-31 09:22:49
回答 5查看 7.2K关注 0票数 11

根据下面的表格标准,似乎有一个实体名和一个实体号与每个保留的ISO-8859-1字符相关联。

例如,对于字符é

实体名称:é

实体号:é

同样,对于字符>

实体名称:>

实体号:>

对于给定的字符串,HttpUtility.HtmlEncode返回一个HTML编码的字符串,但我不知道它是如何工作的。我的意思是:

代码语言:javascript
运行
AI代码解释
复制
Console.WriteLine(HtmlEncode("é>"));
//Outputs é>

它似乎对é字符使用了实体号,而对>字符使用了实体名。

那么,HtmlEncode方法真的适用于ISO8859-1标准吗?如果有的话,它为什么有时使用实体名而其他时候使用实体号呢?更重要的是,我能强迫它可靠地给我实体名称吗?

编辑:谢谢大家的回答。不过,在执行搜索之前,我无法解码字符串。在不涉及太多细节的情况下,文本存储在SharePoint列表中,“搜索”由SharePoint自己完成(使用CAML查询)。所以基本上我做不到。

我试图想出一种将实体编号转换为名称的方法,在.NET中有这样的函数吗?或者其他的想法?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-01-31 09:27:37

这就是实现该方法的方法。对于一些已知的字符,它使用相应的实体,而对于其他的所有字符,它都使用相应的十六进制值,并且您无法做太多的事情来修改这种行为。System.Net.WebUtility.HtmlEncode实现的摘录(如反射器所示):

代码语言:javascript
运行
AI代码解释
复制
...
if (ch <= '>')
{
    switch (ch)
    {
        case '&':
        {
            output.Write("&amp;");
            continue;
        }
        case '\'':
        {
            output.Write("&#39;");
            continue;
        }
        case '"':
        {
            output.Write("&quot;");
            continue;
        }
        case '<':
        {
            output.Write("&lt;");
            continue;
        }
        case '>':
        {
            output.Write("&gt;");
            continue;
        }
    }
    output.Write(ch);
    continue;
}
if ((ch >= '\x00a0') && (ch < 'Ā'))
{
    output.Write("&#");
    output.Write(((int) ch).ToString(NumberFormatInfo.InvariantInfo));
    output.Write(';');
}
...

这是说,您不应该关心,因为这个方法将始终产生有效,安全和正确编码的HTML。

票数 4
EN

Stack Overflow用户

发布于 2011-01-31 09:28:20

HtmlEncode正在遵循规范。ISO标准为每个实体指定了一个名称和一个数字,并且名称和数字是等价的。因此,HtmlEncode的一致性实现可以自由地将所有点编码为数字,或全部编码为名称,或将两者混合在一起。

我建议您从另一个方向着手解决问题:对目标文本调用HtmlDecode,然后使用原始字符串搜索解码后的文本。

票数 1
EN

Stack Overflow用户

发布于 2011-01-31 09:52:44

ISO-8859-1实际上与HTML字符编码无关.维基百科:

数值引用总是引用Unicode代码点,而不管页面的编码如何。

仅对于未定义的Unicode代码点,通常使用ISO-8859-1:

禁止使用引用永久未定义字符和控制字符的数字引用,但行提要、制表符和回车字符除外。也就是说,十六进制范围00-08、0B-0C、0E-1F、7F和80-9F中的字符不能在HTML文档中使用,甚至不允许引用,因此不允许使用"™“。但是,为了与早期HTML作者和忽略此限制的浏览器向后兼容,一些浏览器将80-9F范围内的原始字符和数字字符引用解释为表示在Windows-1252编码中映射到字节80-9F的字符。

现在,要回答您的问题:要使搜索最有效,您应该使用未编码的搜索字符串来搜索未编码的HTML (首先去掉HTML标记)。匹配编码的字符串将导致意外的结果,比如基于HTML标记或注释的命中,以及由于文本中不可见的HTML中的差异而丢失的命中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4853920

复制
相关文章
forEach在集合中的使用
任何类型Collection的可迭代 - 列表,集合,队列 等都具有使用forEach的相同语法。
崔笑颜
2020/06/08
3.7K0
Python中的数组类型
Python没有提供内置的数组类型,但是通过标准库array提供了array类支持数组的创建与使用,可以创建的数组类型包括整数、实数、Unicode字符等等,可以使用help()函数查看更完整的类型列表。 >>> from array import array >>> s = "Hello world" >>> sa = array('u', s) #创建可变字符串对象 >>> print(sa) array('u', 'Hello world') >>> print(sa.tostring())
Python小屋屋主
2018/04/16
3.9K0
【前端】iterable类型的 forEach方法
zhaokang555
2023/10/17
920
Java 类在 Tomcat 中是如何加载的?
https://www.cnblogs.com/xing901022/p/4574961.html
Java技术栈
2019/09/26
2.6K0
Java 类在 Tomcat 中是如何加载的?
TypeScript 中的数组类型定义
在 TypeScript 中声明和初始化数组也很简单,和声明数字类型和字符串类型的变量也差不多,只不过在指定数组类型时要在类型后面加上一个中括号 []
Qwe7
2022/03/19
5.6K0
创建自定义类的对象数组
CN_Simo
2017/12/26
2.4K0
创建自定义类的对象数组
foreach 引发的值类型与引用类型思考
用都知道的一句话概括:“引用类型在堆上,栈上只保存引用;值类型即可存放于栈上也可存放于堆上,值类型变量直接存储值本身”。
雪飞鸿
2018/09/05
7640
foreach 引发的值类型与引用类型思考
java中数组的下标的数据类型是_java返回数组下标
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/10
2.3K0
JS中forEach的坑
我们就按如下写了代码,但是却不能实现我们想要的结果,该方法最终会永远返回true。
码客说
2023/04/06
2.3K0
关于数组中forEach() 、map()、filter()、reduce()、some()、every()的总结
1、forEach() var arr = [1, 2, 3, 4]; arr.forEach((item, index, arr) = > { console.log(item) //结果为1,2,3,4 }) //forEach遍历数组,无返回值,不改变原数组,仅仅只是遍历、常用于注册组件、指令等等。 2、map() var arr = [1, 2, 3, 4]; arr.map((item, index, arr) = > { return item * 10 //新数组为1
前端迷
2018/10/29
1.2K0
C++中的数组类型操作
开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情
鲸落c
2022/11/28
1.6K0
python里[::-1]_python中的数组类型
当j缺省时,默认为len(alist), 即a[1:]相当于a[1:len(alist)]
全栈程序员站长
2022/09/22
1.6K0
函数表达式在JavaScript中是如何工作的?
在JavaScript中,函数表达式是一种将函数赋值给变量的方法。函数表达式可以出现在代码的任何位置,而不仅仅是函数声明可以出现的位置。函数表达式的语法如下:
王小婷
2023/10/23
4470
在没有DOM操作的日子里,我是怎么熬过来的(中)
前言 继上篇推送之后,在掘金、segmentfault、简书、博客园等平台上迅速收到了不俗的反馈,大部分网友都留言说感同身受,还有不少网友追问中篇何时更新。于是,闰土顺应呼声,在这个凛冽的寒冬早晨,将中篇热文滚烫呈上。 搬好小板凳,接下来,正文从这开始~ 在上篇的众多留言中,有位网友的评论比较具有代表性,摘出来供大家一阅: “ 同感啊楼主 比如做tab的时候,以前jq就是切换一下class,现在vue是切换数据,再根据数据显示class,这弯绕的啊 ” 当然,有评论就有回复,请看下面这位网友是怎么回复他的:
闰土大叔
2018/04/12
1.7K0
在没有DOM操作的日子里,我是怎么熬过来的(中)
【说站】js数组forEach方法的使用
1、forEach()类似于map(),它还将每个元素依次作用于传入函数,但不会返回新的数组。
很酷的站长
2022/11/26
2.9K0
【说站】js数组forEach方法的使用
在Excel中自定义上下文菜单(中)
在下面的示例中,将创建与上文描述的示例相同的按钮和子菜单,但使用RibbonX创建。
fanjy
2022/11/16
1.8K0
在Excel中自定义上下文菜单(中)
Java8 Lambda 表达式中的 forEach 如何提前终止?
也就是说,关键字"return",在这里执行的效果相当于普通for循环里的关键词continue"。
Spark学习技巧
2023/03/21
8740
Java8 Lambda 表达式中的 forEach 如何提前终止?
在PHP中灵活使用foreach+list处理多维数组
先抛出问题,有时候我们接收到的参数是多维数组,我们需要将他们转成普通的数组,比如:
硬核项目经理
2020/01/02
3.8K0
Java中的增强 for 循环 foreach
  foreach 是 Java 中的一种语法糖,几乎每一种语言都有一些这样的语法糖来方便程序员进行开发,编译期间以特定的字节码或特定的方式来对这些语法进行处理。能够提高性能,并减少代码出错的几率。在
IT可乐
2018/01/04
3.2K0
Java中的增强 for 循环   foreach
点击加载更多

相似问题

如何检查一个点是否在三角形中?

21

如何检查经度/纬度点是否在坐标范围内?

12

如何确定一个点是否在三角形内

118

如何检查一个点是否在三角形内(在这条线上也可以)

11

查找一个点是否在三角形内

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档