为什么CFML中的URLEncodedFormat()会编码有效的URL字符?

时间:2009-06-29 00:27:19

标签: coldfusion urlencode

URLEncodedFormat()转义有效网址字符的原因是什么?

有效字符:

- _ . ! ~ * " ( )

CF8 Doc表示“[URLEncodedFormat()转义”具有等效十六进制转义序列的非字母数字字符。“但是,为什么要转义有效的URL字符?

3 个答案:

答案 0 :(得分:11)

它们是有效的,但对我来说似乎很正常,如果你要求编程语言url编码一个字符串,它将所有非字母数字字符转换为十六进制等效字符。

ASP的Server.URLEncode()做同样的事情,php urlencode()也做了 - 除了 - 和_。此外,在javascript中,encodeURIComponent()函数会将所有非字母数字字符编码为十六进制等效字符。

无论如何,在使用用户输入形成服务器请求以防止发生任何意外情况时,对所有非字母数字字符进行编码是一个好主意。

答案 1 :(得分:1)

有效网址字符的编码是导致错误还是问题?

一个问题可能是,如果不这样做,如果您在电子邮件中嵌入了带有非编码字符的链接,则电子邮件软件可能会决定将链接分成两行。

如果您使用完全编码的网址,则可能会大大减少这种情况。只是看待它的一种方式。

答案 2 :(得分:0)

我至少可以看到“当使用URL作为锚标记中的链接时对它进行编码会很好。