при щелчке ссылки, содержащей символ @, url дает мне% 40, чего я хочу. Но как только я нажму на него, через секунду он изменится на% 2540 сразу после щелчка. Щелчок находится по электронной почте, а затем направляется на сайт, где% 40 изменяется на% 2540. Как я могу заставить его перестать меняться?
теперь он получает такие параметры:
$email=Yii::app()->request->getParam('email');
не знаю, какую другую информацию я должен предоставить.
Проблема в том, что ваш %40
снова закодирован по URL (поскольку %
кодируется до %25
), что дает вам %2540
.
Это происходит, когда вы пытаетесь вызвать urlencode в строке запроса, когда вы уже это сделали. Итак, первый вызов дает вам% 40 вместо «@». И второй вызов дает вам% 25 вместо%
В вашем вопросе недостаточно подробностей, чтобы точно определить, почему, но я могу сказать вам, по крайней мере, то, что происходит, и это должно дать вам некоторые подсказки.
«@» Имеет код ASCII шестнадцатеричного кода 40, поэтому, когда он получает экранирование (т.е. превращается во что-то без каких-либо специальных символов в нем), он становится «% 40». Но «%» имеет ASCII-код шестнадцатеричной буквы 25. Если вы избежите «%», вы получите «% 25».
Ваш текст ускользает дважды: сначала перейти от «@» в «% 40», а затем снова перейти от «% 40» в «% 2540».