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中得到如此不同的答案?
在此先感谢您的帮助。
URLEncode的ASP版本比PHP版本更严格。
某些字符(如点或下划线)并不一定需要进行编码(与&符号或等号相反,如果未编码,可能会中断查询字符串)。
我想因为生成较少的“丑陋”URL,PHP会留下这些字符未编码,因为它们不会造成任何伤害,而ASP严格编码不是ASCII字母数字的所有内容。
最后在字符串之间没有区别。
感谢您的回答!我会尽力找到解决的办法。 – 2011-06-06 19:03:33
@André:我刚刚写了一个函数,将'%5F'替换回'_'等等。 – Tomalak 2011-06-06 19:16:25
ASP的过度和编码'.'和'_'字符。这些不是URL元字符,所以没有真正的理由他们应该被编码。 – 2011-06-06 18:19:16