URLEncode在ASP经典和PHP中返回不同的值

问题描述:

我正在开发和应用程序,它必须与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

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

某些字符(如点或下划线)并不一定需要进行编码(与&符号或等号相反,如果未编码,可能会中断查询字符串)。

我想因为生成较少的“丑陋”URL,PHP会留下这些字符未编码,因为它们不会造成任何伤害,而ASP严格编码不是ASCII字母数字的所有内容。

最后在字符串之间没有区别。

+0

感谢您的回答!我会尽力找到解决的办法。 – 2011-06-06 19:03:33

+0

@André:我刚刚写了一个函数,将'%5F'替换回'_'等等。 – Tomalak 2011-06-06 19:16:25