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()&#39;星号&#39;(星号)字符 的全部内容, 来源链接: utcz.com/qa/411575.html

回到顶部