【发布时间】:2011-10-11 20:12:14
【问题描述】:
为什么URI.escape 不转义单引号?
URI.escape("foo'bar\" baz")
=> "foo'bar%22%20baz"
【问题讨论】:
-
因为单引号是合法的 URI 字符。 stackoverflow.com/questions/1547899/…
-
嗯.. 虽然它们是保留的,这意味着它们是允许的,但具有特殊的句法含义。在这种情况下,我不希望它们具有特殊含义,它是用户输入的数据,它不应该被解释为语法,而是被浏览器和 Web 应用程序以及它们之间的所有层解释为数据。所以我想真正的问题是,“逃脱”是什么意思......
-
根据the docs,它将转义
REGEX::UNSAFE定义的“不安全”字符。您可以自己传递。 -
FWIW 我在这里是因为当您尝试运行失效时,AWS Cloudfront 期望 URI 中的单引号被转义为
%27。所以,我猜这对某些人来说是合法的,而对其他人来说是不合法的。