【发布时间】:2011-09-25 21:19:29
【问题描述】:
我正在测试 PHP urlencode() 与 Java java.net.URLEncoder.encode()。
Java
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();
}
PHP
$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() - 没有运气。
【问题讨论】:
-
我已经询问了similar question 以尝试获得更全面的答案。