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

时间:2011-06-06 18:15:18

标签: php url-encoding

我正在开发和应用程序,必须与PayPal集成。为此,它通过API进行一些调用,在这些调用中,我必须传递一些URLEncoded参数。我的问题是我没有让它工作,因为经典asp的Server.URLEncode给我带来了一些奇怪的东西。

见下文:

@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编码的,我是用DreamLaver编写的,用CTRL + J>标题/编码

有谁知道为什么我在ASP经典和PHP中得到了如此不同的答案?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

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

某些字符(如点或下划线)并非绝对需要进行编码(与“&”符号或等号相反,如果不进行编码,则可能会破坏查询字符串)。

我认为由于产生较少“丑陋”的URL,PHP会将这些字符保留为未编码,因为它们没有任何损害,而ASP严格编码不是ASCII字母数字的所有内容。

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