- From: Walter Ian Kaye <walter@natural-innovations.com>
- Date: Sun, 13 Jul 1997 00:07:11 -0700
- To: www-html@w3.org
At 9:41a -0400 07/10/97, Greg Marr wrote: > At 10:04 PM 7/9/97 -0700, Walter Ian Kaye wrote: > >At 9:51a -0400 07/09/97, Greg Marr wrote: > > > However, the preferred way is > > > smtp://host/user?subject=subject+body=yes+X-header=header > > > >This makes no sense. CGI's expect ampersands as delimiters. > > Except for the ones that expect +'s. At 1:20p -0400 07/11/97, Greg Marr amended: > > The separator [...] was ; not + [...] OK, I found it... in RFC 1866... :-) > 8.2.1. The form-urlencoded Media Type > > The default encoding for all forms is 'application/x-www-form- > urlencoded'. A form data set is represented in this media type as > follows: > > 1. The form field names and values are escaped: space > characters are replaced by '+', and then reserved characters > are escaped as per [URL]; that is, non-alphanumeric > characters are replaced by '%HH', a percent sign and two > hexadecimal digits representing the ASCII code of the > character. Line breaks, as in multi-line text field values, > are represented as CR LF pairs, i.e. '%0D%0A'. > > 2. The fields are listed in the order they appear in the > document with the name separated from the value by '=' and > the pairs separated from each other by '&'. Fields with null > values may be omitted. In particular, unselected radio > buttons and checkboxes should not appear in the encoded > data, but hidden fields with VALUE attributes present > should. > > NOTE - The URI from a query form submission can be > used in a normal anchor style hyperlink. > Unfortunately, the use of the '&' character to > separate form fields interacts with its use in SGML > attribute values as an entity reference delimiter. > For example, the URI 'http://host/?x=1&y=2' must be > written '<a href="http://host/?x=1&y=2"' or '<a > href="http://host/?x=1&y=2">'. > > HTTP server implementors, and in particular, CGI > implementors are encouraged to support the use of > ';' in place of '&' to save users the trouble of > escaping '&' characters this way. So, I guess I'll have to update my 'wiklib.pl' library to check for semicolons instead of just assuming ampersands. Now to come up with a good algorithm. How about this: 1. Count number of '='s in query string. 2. If more than one, determine whether '&' or ';' is used as field separator: ??? Extract substring from first '=' to second '=', then count number of '&'s and ';'s, and compare counts. ??? 3. Split accordingly. That oughta do it, eh? __________________________________________________________________________ Walter Ian Kaye <boo_at_best*com> Programmer - Excel, AppleScript, Mountain View, CA ProTERM, FoxPro, HTML http://www.natural-innovations.com/ Musician - Guitarist, Songwriter
Received on Sunday, 13 July 1997 03:09:20 UTC