2012-04-17 78 views
3

在PHP:php urlencode与java urlencode相同吗?

php -r "echo urlencode('["IM"]'); " 

结果是%5BIM%5D

但在Java

String text = URLEncoder.encode('["IM"]',"UTF-8"); 
System.out.println("text" + text); 

结果是text%5B%22IM%22%5D

什么是这两个函数之间的不同?我怎样才能实现一个Java代码来完成相同的功能的PHP?

回答

1
php -r "echo urlencode('["IM"]'); " 

结果是%5BIM%5D因为函数进行urlencode实际上只取字符串[IM]作为其输入。而在Java

String text = URLEncoder.encode('["IM"]',"UTF-8"); 

被传递的字符串实际上是:["IM"]产生所述值%22其是编码串为"的引号。

1

试图逃跑内部qoutes

php -r "echo urlencode('[\"IM\"]'); " 
+0

这是一样的,但我想要一个java代码。 PHP是由别人写的。 – littletiger 2012-04-17 07:48:54

3
String text = URLEncoder.encode('[IM]',"UTF-8"); 
System.out.println("text" + text); 

%5BIM%5D

echo urlencode('["IM"]'); 

%5B%22IM%22%5D

echo urlencode('[IM]'); 

%5BIM%5D

echo urlencode('[\"IM\"]'); 

%5B%5C%22IM%5C%22%5D

+0

因为实际上我想编码一个JSONArray.tostring()。所以原始字符串可能就像['IM','游戏']。不能简单地删除' – littletiger 2012-04-17 07:57:31

+0

这是你真正想要的吗? '%5B%22IM%22%5D','%5BIM%5D'或'%5B%5C%22IM%5C%22%5D'? '''转义到'%5B','''转义'转换为'%5D'并且'''转义到'%22'。 – Jack 2012-04-17 08:03:47

+0

如果你想要的是[[IM]],那么你的原始java代码是正确的。 – Jack 2012-04-17 08:05:00