urlencode()'星号'(星号)字符
我正在测试 urlencode()
与 java.net.URLEncoder.encode()
。
String all = "";for (int i = 32; i < 256; ++i) {
all += (char) i;
}
System.out.println("All characters: -||" + all + "||-");
try {
System.out.println("Encoded characters: -||" + URLEncoder.encode(all, "utf8") + "||-");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
$all = "";for($i = 32; $i < 256; ++$i)
{
$all = $all.chr($i);
}
echo($all.PHP_EOL);
echo(urlencode(utf8_encode($all)).PHP_EOL);
除了不是由Java编码并由PHP转换为%2A的“星号”字符,所有这两个函数的字符似乎都以相同的方式编码。哪种行为应该是“正确的”行为(如果有)?
注意:我也尝试rawurlencode()
过-没有运气。
回答:
可以*
在URL中使用(但也可以采用编码形式)。
RFC1738:统一资源定位符(URL)声明以下内容:
[…]
通常,当八位字节由字符表示并进行编码时,URL具有相同的解释。但是,对于保留字符而言并非如此:对为特定方案保留的字符进行编码可能会更改URL的语义。
因此,仅字母数字, 和用于保留目的的保留字符 在URL中 。
在URL的特定于方案的部分内 ,只要它们不用于保留目的即可。
以上是 urlencode()'星号'(星号)字符 的全部内容, 来源链接: utcz.com/qa/411575.html