2012-04-17 74 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