URLEncode возвращает различное значение в ASP classic и PHP - PullRequest
3 голосов
/ 06 июня 2011

Я разрабатываю и приложение, которое должно интегрироваться с PayPal. Для этого он делает некоторый вызов через API, и в этих вызовах мне нужно передать некоторые параметры, которые закодированы в URLE. Моя проблема в том, что у меня не получается, потому что Server.URLEncode классического asp возвращает мне что-то странное.

См. Ниже:

@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?

Заранее спасибо за любую помощь.

1 Ответ

1 голос
/ 06 июня 2011

ASP-версия URLEncode просто строже, чем PHP-версия.

Некоторые символы, такие как точка или подчеркивание, не обязательно должны быть закодированы (в отличие от амперсанда или знака равенства, которые могут оставить строку запроса, если не закодированы).

Я полагаю, что по причине создания менее «уродливых» URL-адресов PHP оставляет эти символы незакодированными, поскольку они не причиняют вреда, тогда как ASP строго кодирует все, что не является буквенно-цифровым ASCII.

В итоге между строками не будет разницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...