我正在开发一个带有多个表单的 Web 应用程序,用户需要在这些表单上输入通常包含空格和/或加号的数据。
数据通常通过GET
请求发送;或通过POST
带有application/x-www-form-urlencoded
Content-Type 标头的请求。
我尝试过使用Perl 模块中的任何一个Vars()
,但是这两种方法都坚持将符号转换为空格。param
CGI
+
模块是否CGI
提供任何机制来保存+
标志;还是我应该放弃CGI
并手动解析STDIN
输入?
注意:
由于表单数量众多(超过一百个),并且 CGI 预处理发生在一个集中的实用程序库中,我非常偏向于服务器端解决方案而不是客户端方法(换句话说,我宁愿在预处理代码上处理一次问题,也不愿在数百个地方添加 JS 噪声)。
提前感谢您提供的任何帮助。
示例:
根据评论中的要求,这里是一些触发问题的代码的(简化)示例。
HTML
<form action="/cgi-bin/some-script.pl">
<input name="some_field" value="1 + 1 is 2">
<input name="submit" type="submit" value="Submit">
</form>
Perl
use CGI;
my $some_variable = CGI::param('some_field');
使用默认值提交表单并运行服务器端代码后,$some_variable
' 的值为"1 1 is 2"
(1 之间有三个空格,SO 站点或浏览器可能会将它们折叠成一个空格);期望的结果是获得该"1 + 1 is 2"
变量中的值。