我曾经$cgi->param('search_string');
在我的 Perl 脚本中检索一个 url 参数,但我怀疑该值在我得到它之前$cgi->param
正在通过函数传递。uri_unescape()
例子:
- 该表格有一个
search_string=ЛИКЕР ВИШНЕВЫЙ
- 该网址有一个
search_string=%41B%418%41A%415%420+%412%418%428%41D%415%412%42B%419
- 但
$cgi->param('search_string')
回报ABA8AAA5B0+A2A8B8ADA5A2BBA9
而不是%41B%418%41A%415%420+%412%418%428%41D%415%412%42B%419
我可以简单解码的回报。
这是我的代码中实际发生的事情:
我将这个 "ПЛЕНКА ПИЩЕВАЯ" 作为 $search_string;
$search_string =~ s/\s/+/g;
$search_string =~ s/\#/\%23/g;
$search_string =~ s/[^A-Za-z0-9\+\*\.\@\_\-]/uc sprintf("%%%02x",ord($&))/egx;
search_string=%41F%41B%415%41D%41A%410+%41F%418%429%415%412%410%42F
由此我在 URL 本身中得到了这个。
然后,当我使用$cgi->param('search_string')
在另一端检索该值时,我得到了这个"AFABA5ADAAA0 AFA8B9A5A2A0BF"
。这里的另一个问题是 $cgi->param('search_string') 似乎确实会自动调用 uri_unescape() ,这就是我得到"AFABA5ADAAA0 AFA8B9A5A2A0BF"
.
我如何才能使最终结果返回给我"ПЛЕНКА ПИЩЕВАЯ"
?