2011-06-06 131 views
3

我正在開發和應用程序,它必須與PayPal集成。爲此,它通過API進行一些調用,並且在這些調用中,我必須傳遞一些URLEncoded參數。我的問題是,我沒有得到它的工作,因爲經典ASP的Server.URLEncode返回一些奇怪的東西。URLEncode在ASP經典和PHP中返回不同的值

參見下文:

@CODEPAGE="65001"  
Response.Charset = "UTF-8" 
response.write(server.URLEncode("xxxx_1344559025_biz_api1.yy.com")) 

返回我這個字符串:XXXX%5F1344559025%5Fbiz%5Fapi1%2Eyy%2Ecom

PHP中的相同

echo(urlencode('xxxx_1344559025_biz_api1.yy.com')); 

返回我這個字符串: xxxx_1344559025_biz_api1.yy.com

這兩個文件都以UTF-8編碼,我在DreamWe上做了這些用Ctrl + J> title /編碼

有誰知道爲什麼我在ASP經典和PHP中得到如此不同的答案?

在此先感謝您的幫助。

+0

ASP的過度和編碼'.'和'_'字符。這些不是URL元字符,所以沒有真正的理由他們應該被編碼。 – 2011-06-06 18:19:16

回答

1

URLEncode的ASP版本比PHP版本更嚴格。

某些字符(如點或下劃線)並不一定需要進行編碼(與&符號或等號相反,如果未編碼,可能會中斷查詢字符串)。

我想因爲生成較少的「醜陋」URL,PHP會留下這些字符未編碼,因爲它們不會造成任何傷害,而ASP嚴格編碼不是ASCII字母數字的所有內容。

最後在字符串之間沒有區別。

+0

感謝您的回答!我會盡力找到解決的辦法。 – 2011-06-06 19:03:33

+0

@André:我剛剛寫了一個函數,將'%5F'替換回'_'等等。 – Tomalak 2011-06-06 19:16:25