网址编码和HTML编码之间的区别


Answers:


83

HTML编码会在HTML文档中使用的字符串中转义特殊字符,以防止与HTML元素(如更改)混淆

"<hello>world</hello>" 

"&lt;hello&gt;world&lt;/hello&gt;"

URL编码对URL中的字符串值执行类似的操作,例如更改

"hello+world = hello world"

"hello%2Bworld+%3D+hello+world"

15
HTML编码和URL编码所做的根本不同。例如,如果您对“ hello world”进行HTML编码,然后尝试将其添加到网址中,则会获得无效的网址。两者都很重要,应在不同情况下使用。
尼尔2014年

1
只需经历一些工作,并用UrlEncoding替换用于URL编码的HtmlEncode用法,空格和其他一些特殊字符的编码问题
PJUK

请注意,使用HtmlEncode代替UrlEncode对于URL可能会出现问题,因为HtmlEncode在整个字符串中都放置了“&”字符。根据接收URL的Web服务的期望,一些额外的“&”字符可能会引起很大的问题。例如,如果您的Web服务期望URL中的每个参数都以“&”字符开头,但是您使用了HtmlEncode并添加了一堆额外的“&”字符,则当您的Web服务中会出现错误尝试解释URL。出于这个原因,我只需要用UrlEncode替换HtmlEncode的几种用法即可。
jdnew18

3
请不要听菲尔。我发现无法相信他正在使用查询字符串并使用HtmlEncode而不是UrlEncode创建现代的url。说UrlEncode几乎是无用的,这是我在此站点上看到的最荒谬的事情之一。
Nard Dog

23

urlEncode将特殊字符替换为Web浏览器/ Web服务器可以理解的字符,以解决URL的问题。例如,空格将替换为%20,'=%27等。

请参阅以下参考:

HtmlEncode用HTML引擎本身识别的字符串替换特殊字符以呈现页面内容-之类的&变成了&amp; or < = &lt; > = &lt;这样,它阻止HTML引擎将这些字符解释为HTML标记的一部分,因此将它们呈现为字符串。

请参阅此参考资料:


实际上,URLEncode用+替换空格,这在某些情况下可能是个问题。
NetMage

13

HTML和URL实质上都是非常受限制的语言。作为一种语言,它们为特定的关键字或运算符添加了含义。但是对于这两种语言,关键字几乎总是单个字符。例如

  • HTML:>和<
  • 网址:/和:

但是,在使用每种语言时,可能会以不保证语言含义的方式使用这些结构。例如,此帖子包含一个>字符。我不希望将其解释为HTML,而只是文本。

这就是Encode和Decode方法起作用的地方。这些方法将分别获取一个字符串,并将原本将被视为关键字的任何字符转换为转义形式,该形式将不被解释为语言的一部分。

例如:将>传递给HtmlEncode将返回&gt;


3

HTMLEncode和URLEncode处理HTML和URL中的无效字符,或更准确地说,处理需要特殊编写才能正确解释的字符。例如,在HTML中,<和>字符用于指示标签。因此,如果您想编写数学公式,例如1 + 1 <2 + 2,则通常将<<解释为标签的开头。HTMLEncoding将此字符转换为“&lt;” 这是小于号的编码表示形式。URLEncoding的功能相同,但对于URL来说,特殊字符不同,尽管存在一些重叠。


1

我不知道您使用的是哪种语言,但是例如PHP手册提供了很好的解释。

URLEncode

返回一个字符串,其中所有非字母数字字符(-_除外)。已由百分号(%)替换,后跟两个十六进制数字和空格,并编码为加号(+)。它的编码方式与WWW表单中发布的数据的编码方式相同,即与application / x-www-form-urlencoded媒体类型中的方式相同。这与»RFC 1738编码(请参见rawurlencode())不同,由于历史原因,空格被编码为加号(+)。

继续阅读

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.