📄 ch09_02.htm
字号:
<html><head><title>URL Encoding (Perl in a Nutshell, 2nd Edition)</title><link rel="stylesheet" type="text/css" href="../style/style1.css" /><meta name="DC.Creator" content="Stephen Spainhour" /><meta name="DC.Format" content="text/xml" scheme="MIME" /><meta name="DC.Language" content="en-US" /><meta name="DC.Publisher" content="O'Reilly & Associates, Inc." /><meta name="DC.Source" scheme="ISBN" content="0596002416L" /><meta name="DC.Subject.Keyword" content="stuff" /><meta name="DC.Title" content="Perl in a Nutshell, 2nd Edition" /><meta name="DC.Type" content="Text.Monograph" /></head><body bgcolor="#ffffff"><img src="gifs/smbanner.gif" usemap="#banner-map" border="0" alt="Book Home" /><map name="banner-map"><area shape="rect" coords="1,-2,616,66" href="index.htm" alt="Java and XSLT" /><area shape="rect" coords="629,-11,726,25" href="jobjects/fsearch.htm" alt="Search this book" /></map><div class="navbar"><table width="684" border="0"><tr><td align="left" valign="top" width="228"><a href="ch09_01.htm"><img src="../gifs/txtpreva.gif" alt="Previous" border="0" /></a></td><td align="center" valign="top" width="228" /><td align="right" valign="top" width="228"><a href="ch09_03.htm"><img src="../gifs/txtnexta.gif" alt="Next" border="0" /></a></td></tr></table></div><h2 class="sect1">9.2. URL Encoding</h2><p><a name="INDEX-1621" /><a name="INDEX-1622" /><a name="INDEX-1623" />Before data supplied on a form can be sentto a CGI program, each form element's name(specified by the <tt class="literal">name</tt> attribute) is equated withthe value entered by the user to create a key/value pair. Forexample, if the user entered "30"when asked for his or her age, the key/value pair would be"age=30". In the transferred data,key/value pairs are separated by the ampersand (&)character<a name="INDEX-1624" /><a name="INDEX-1625" />.</p><p><a name="INDEX-1626" /><a name="INDEX-1627" /><a name="INDEX-1628" />Since under the GET method the forminformation is sent as part of the URL, form informationcan't include any spaces or other special charactersthat are not allowed in URLs, and also can't includecharacters that have other meanings in URLs, like slashes (/). (Forthe sake of consistency, this constraint also exists when the POSTmethod is being used.) Therefore, the web browser performs somespecial encoding on user-supplied information.</p><p>Encoding involves replacing spaces and other special characters inthe query strings with their hexadecimal equivalents. (Thus, URLencoding is also sometimes called <em class="emphasis">hexadecimalencoding</em>.) Suppose a user fills out and submits a formcontaining his or her birthday in the syntax mm/dd/yy (e.g.,11/05/73). The forward slashes in the birthday are among the specialcharacters that can't appear in theclient's request for the CGI program. Thus, when thebrowser issues the request, it encodes the data. The following samplerequest shows the resulting encoding:</p><blockquote><pre class="code">POST /cgi-bin/birthday.pl HTTP/1.0Content-length: 21birthday=11%2F05%2F73</pre></blockquote><p>The sequence <tt class="literal">%2F</tt> is actually the hexadecimalequivalent of the slash character.</p><p>CGI scripts have to provide some way to"decode" the form data that theclient has encoded. The best way to do this is to use CGI.pm (coveredin <a href="ch10_01.htm">Chapter 10, "The CGI.pm Module"</a>) and let someone else do the work foryou. <a name="INDEX-1629" /><a name="INDEX-1630" /> </p><hr width="684" align="left" /><div class="navbar"><table width="684" border="0"><tr><td align="left" valign="top" width="228"><a href="ch09_01.htm"><img src="../gifs/txtpreva.gif" alt="Previous" border="0" /></a></td><td align="center" valign="top" width="228"><a href="index.htm"><img src="../gifs/txthome.gif" alt="Home" border="0" /></a></td><td align="right" valign="top" width="228"><a href="ch09_03.htm"><img src="../gifs/txtnexta.gif" alt="Next" border="0" /></a></td></tr><tr><td align="left" valign="top" width="228">9. CGI Overview</td><td align="center" valign="top" width="228"><a href="index/index.htm"><img src="../gifs/index.gif" alt="Book Index" border="0" /></a></td><td align="right" valign="top" width="228">9.3. Extra Path Information</td></tr></table></div><hr width="684" align="left" /><img src="../gifs/navbar.gif" usemap="#library-map" border="0" alt="Library Navigation Links" /><p><p><font size="-1"><a href="copyrght.htm">Copyright © 2002</a> O'Reilly & Associates. All rights reserved.</font></p><map name="library-map"><area shape="rect" coords="1,0,85,94" href="../index.htm"><area shape="rect" coords="86,1,178,103" href="../lwp/index.htm"><area shape="rect" coords="180,0,265,103" href="../lperl/index.htm"><area shape="rect" coords="267,0,353,105" href="../perlnut/index.htm"><area shape="rect" coords="354,1,446,115" href="../prog/index.htm"><area shape="rect" coords="448,0,526,132" href="../tk/index.htm"><area shape="rect" coords="528,1,615,119" href="../cookbook/index.htm"><area shape="rect" coords="617,0,690,135" href="../pxml/index.htm"></map></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -