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

URLEncode在ASP classic和PHP中返回不同的值,php,url-encoding,Php,Url Encoding,我正在开发和应用,必须与贝宝集成。要做到这一点,它通过API进行一些调用,在这些调用中,我必须传递一些URL编码的参数。我的问题是,我无法让它工作,因为经典asp的Server.URLEncode返回了一些奇怪的信息 见下文: @CODEPAGE="65001" Response.Charset = "UTF-8" response.write(server.URLEncode("xxxx_1344559025_biz_api1.yy.com")) 返回此字符串:xxxx%5F1344

我正在开发和应用,必须与贝宝集成。要做到这一点,它通过API进行一些调用,在这些调用中,我必须传递一些URL编码的参数。我的问题是,我无法让它工作,因为经典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编码的,我在DreamWeaver上用CTRL+J>title/encoding进行编码

有人知道为什么我在ASP classic和PHP中得到如此不同的答案吗


提前感谢您的帮助。

URL编码的ASP版本比PHP版本更严格

有些字符,如点或下划线,不一定需要编码(与符号和或等号相反,如果不编码,可能会中断查询字符串)

我想,为了生成不那么“难看”的URL,PHP没有对这些字符进行编码,因为它们不会造成伤害,而ASP严格地对所有非ASCII字母数字的内容进行编码


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

ASP对
字符进行编码有点过火。这些不是URL元字符,所以没有真正的理由对它们进行编码。谢谢你的回答!我会设法解决它的。@André:我刚刚写了一个函数,将
%5F
替换回
\uu
等等。