Я тестирую 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, и переведен в% 2A с помощью PHP. Какое поведение должно быть «правильным», если оно есть?
Примечание: Я тоже пробовал с rawurlencode ()
- не повезло.