栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JavaScript什么时候应该使用转义而不是encodeURI / encodeURIComponent?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaScript什么时候应该使用转义而不是encodeURI / encodeURIComponent?

escape()

不要使用它!

escape()
在B.2.1.2节中定义了转义,并且附件B的引言中指出:

…本附件中指定的所有语言功能和行为均具有一个或多个不良特征,在没有遗留用法的情况下,将从本规范中删除。…
…程序员不应该使用或编写新的ECMAscript代码时承担的这些功能和行为的存在....

特殊字符的编码除外:@ * _ +-。/

字符的十六进制形式(其代码单位值为0xFF或更小)是两位数字的转义序列:

%xx

对于具有较大代码单位的字符,将

%uxxxx
使用四位数格式。查询字符串(如RFC3986中所定义)中不允许这样做:

query       = *( pchar / "/" / "?" )pchar         = unreserved / pct-enpred / sub-delims / ":" / "@"unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"pct-enpred   = "%" HEXDIG HEXDIGsub-delims    = "!" / "$" / "&" / "'" / "(" / ")"   / "*" / "+" / "," / ";" / "="

仅当百分号后接两个十六进制数字时才允许使用百分号,而百分号后接

u
则不允许。

enpreURI()

当您需要有效的URL时,请使用enpreURI。拨打电话:

enpreURI("http://www.example.org/a file with spaces.html")

要得到:

http://www.example.org/a%20file%20with%20spaces.html

不要调用enpreURIComponent,因为它会破坏URL并返回

http%3A%2F%2Fwww.example.org%2Fa%20file%20with%20spaces.html

enpreURIComponent()

当您想对URL参数的值进行编码时,请使用enpreURIComponent。

var p1 = enpreURIComponent("http://example.org/?a=12&b=55")

然后,您可以创建所需的URL:

var url = "http://example.net/?param1=" + p1 + "&param2=99";

您将获得以下完整的URL:

http://example.net/?param1=http%3A%2F%2Fexample.org%2F%Ffa%3D12%26b%3D55&param2=99

请注意,enpreURIComponent不会转义该

'
字符。一个常见的错误是使用它来创建html属性,例如
href='MyUrl'
,可能会遇到注入错误。如果要从字符串构造html,请使用
"
而不是使用
'
属性引号,或添加额外的编码层(
'
可以编码为%27)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/402569.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号