html5/spec Overview.html,1.5285,1.5286

Update of /sources/public/html5/spec
In directory hutz:/tmp/cvs-serv11476

Modified Files:
	Overview.html 
Log Message:
Try to make the application/x-www-form-urlencoded algorithm work even for ISO-2022-JP's crazy escape schemes. (whatwg r6592)

Index: Overview.html
===================================================================
RCS file: /sources/public/html5/spec/Overview.html,v
retrieving revision 1.5285
retrieving revision 1.5286
diff -u -d -r1.5285 -r1.5286
--- Overview.html	26 Sep 2011 22:32:15 -0000	1.5285
+++ Overview.html	27 Sep 2011 19:10:13 -0000	1.5286
@@ -321,7 +321,7 @@
 
    <h1>HTML5</h1>
    <h2 class="no-num no-toc" id="a-vocabulary-and-associated-apis-for-html-and-xhtml">A vocabulary and associated APIs for HTML and XHTML</h2>
-   <h2 class="no-num no-toc" id="editor-s-draft-26-september-2011">Editor's Draft 26 September 2011</h2>
+   <h2 class="no-num no-toc" id="editor-s-draft-27-september-2011">Editor's Draft 27 September 2011</h2>
    <dl><dt>Latest Published Version:</dt>
     <dd><a href="http://www.w3.org/TR/html5/">http://www.w3.org/TR/html5/</a></dd>
     <dt>Latest Editor's Draft:</dt>
@@ -467,7 +467,7 @@
   Group</a> is the W3C working group responsible for this
   specification's progress along the W3C Recommendation
   track.
-  This specification is the 26 September 2011 Editor's Draft.
+  This specification is the 27 September 2011 Editor's Draft.
   </p><!-- UNDER NO CIRCUMSTANCES IS THE PRECEDING PARAGRAPH TO BE REMOVED OR EDITED WITHOUT TALKING TO IAN FIRST --><p>Work on this specification is also done at the <a href="http://www.whatwg.org/">WHATWG</a>. The W3C HTML working group
   actively pursues convergence with the WHATWG, as required by the <a href="http://www.w3.org/2007/03/HTML-WG-charter">W3C HTML working
   group charter</a>.</p><!-- UNDER NO CIRCUMSTANCES IS THE FOLLOWING PARAGRAPH TO BE REMOVED OR EDITED WITHOUT TALKING TO IAN FIRST --><p>This document was produced by a group operating under the <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5
@@ -40089,7 +40089,14 @@
 
    <li><p>Return the <var title="">form data set</var>.</li>
 
-  </ol></div><h5 id="url-encoded-form-data"><span class="secno">4.10.22.5 </span>URL-encoded form data</h5><div class="impl">
+  </ol></div><h5 id="url-encoded-form-data"><span class="secno">4.10.22.5 </span>URL-encoded form data</h5><p class="note">This form data set encoding is in many ways an
+  aberrant monstrosity, the result of many years of implementation
+  accidents and compromises leading to a set of requirements necessary
+  for interoperability, but in no way representing good design
+  practices. In particular, readers are cautioned to pay close
+  attention to the twisted details involving repeated (and in some
+  cases nested) conversions between character encodings and byte
+  sequences.<div class="impl">
 
   <p>The <dfn id="application-x-www-form-urlencoded-encoding-algorithm"><code title="">application/x-www-form-urlencoded</code> encoding
   algorithm</dfn> is as follows:</p>
@@ -40140,65 +40147,65 @@
 
      <li>
 
-      <p>For each character in the entry's name and value, apply the
+      <p>Encode the entry's name and value using the selected
+      character encoding. The entry's name and value are now byte
+      strings.</p>
+
+     </li>
+
+     <li>
+
+      <p>For each byte in the entry's name and value, apply the
       appropriate subsubsteps from the following list:</p>
 
-      <dl class="switch"><dt>The character is a U+0020 SPACE character</dt>
+      <dl class="switch"><dt>The byte is 0x20 (U+0020 SPACE if interpreted as ASCII)</dt>
 
-       <dd>Replace the character with a single U+002B PLUS SIGN
-       character (+).</dd>
+       <dd>Replace the byte with a single 0x2B byte (U+002B PLUS SIGN
+       character (+) if interpreted as ASCII).</dd>
 
 
        
 
-       <dt>If the character is in the range U+002A, U+002D, U+002E,
-       U+0030 to U+0039, U+0041 to U+005A, U+005F, U+0061 to
-       U+007A</dt>
+       <dt>If the byte is in the range 0x2A, 0x2D, 0x2E, 0x30 to 0x39,
+       0x41 to 0x5A, 0x5F, 0x61 to 0x7A</dt>
 
-       <dd><p>Leave the character as is.</dd>
+       <dd><p>Leave the byte as is.</dd>
 
 
        <dt>Otherwise</dt>
 
        <dd>
 
-        <p>Replace the character with a string formed as follows:</p>
-
-        <ol><li><p>Let <var title="">s</var> be an empty string.</li>
-
-         <li>
-
-          <p>For each byte <var title="">b</var> of the character when
-          expressed in the selected character encoding in turn, run
-          the appropriate subsubsubstep from the list below:</p>
+        <ol><li><p>Let <var title="">s</var> be a string consisting of a
+         U+0025 PERCENT SIGN character (%) followed by two characters
+         in the ranges U+0030 DIGIT ZERO (0) to U+0039 DIGIT NINE (9)
+         and U+0041 LATIN CAPITAL LETTER A to U+0046 LATIN CAPITAL
+         LETTER F representing the hexadecimal value of the byte in
+         question (zero-padded if necessary).</li>
 
-          <dl class="switch"><dt>If the byte is in the range 0x20, 0x2A, 0x2D, 0x2E,
-           0x30 to 0x39, 0x41 to 0x5A, 0x5F, 0x61 to 0x7A</dt>
+         <li><p>Encode the string <var title="">s</var> as US-ASCII,
+         so that it is now a byte string.</p>
 
-           <dd><p>Append to <var title="">s</var> the Unicode
-           character with the code point equal to the byte.</dd>
+         <li><p>Replace the byte in question in the name or value
+         being processed by the bytes in <var title="">s</var>,
+         preserving their relative order.</li>
 
-           <dt>Otherwise</dt>
+        </ol></dd>
 
-           <dd><p>Append to the string a U+0025 PERCENT SIGN character
-           (%) followed by two characters in the ranges U+0030 DIGIT
-           ZERO (0) to U+0039 DIGIT NINE (9) and U+0041 LATIN CAPITAL
-           LETTER A to U+0046 LATIN CAPITAL LETTER F representing the
-           hexadecimal value of the byte (zero-padded if
-           necessary).</dd>
+      </dl></li>
 
-          </dl></li>
+     <li>
 
-        </ol></dd>
+      <p>Interpret the entry's name and value as Unicode strings
+      encoded in US-ASCII. (All of the bytes in the string will be in
+      the range 0x00 to 0x7F; the high bit will be zero throughout.)
+      The entry's name and value are now Unicode strings again.</p>
 
-      </dl></li>
+     </li>
 
-     <li><p>If the entry's name is "<code title="attr-fe-name-isindex"><a href="#attr-fe-name-isindex">isindex</a></code>",
-     its type is "<code title="">text</code>", and this is the first
-     entry in the <var title="">form data set</var>, then append the
-     value to <var title="">result</var> and skip the rest of the
-     substeps for this entry, moving on to the next entry, if any, or
-     the next step in the overall algorithm otherwise.</li>
+     <li><p>If the entry's name is "<code title="attr-fe-name-isindex"><a href="#attr-fe-name-isindex">isindex</a></code>", its type is "<code title="">text</code>", and this is the first entry in the <var title="">form data set</var>, then append the value to <var title="">result</var> and skip the rest of the substeps for this
+     entry, moving on to the next entry, if any, or the next step in
+     the overall algorithm otherwise.</li>
 
      <li><p>If this is not the first entry, append a single U+0026
      AMPERSAND character (&amp;) to <var title="">result</var>.</li>
@@ -40288,8 +40295,8 @@
      </li>
 
      <li><p>Convert the <var title="">name</var> and <var title="">value</var> strings to their byte representation in
-     US-ASCII (i.e. convert the Unicode string to a byte
-     string).</li>
+     ISO-8859-1 (i.e. convert the Unicode string to a byte string,
+     mapping code points to byte values directly).</li>
 
      <li><p>Add a pair consisting of <var title="">name</var> and <var title="">value</var> to <var title="">pairs</var>.</li>
 
@@ -40297,9 +40304,8 @@
 
    <li><p>If any of the name-value pairs in <var title="">pairs</var>
    have a name component consisting of the string "<code title="">_charset_</code>" encoded in US-ASCII, and the value
-   component of the first such pair is the name of a supported
-   character encoding, then let <var title="">encoding</var> be that
-   character encoding.</li>
+   component of the first such pair, when decoded as US-ASCII, is the
+   name of a supported character encoding, then let <var title="">encoding</var> be that character encoding.</li>
 
    <li><p>Convert the name and value components of each name-value
    pair in <var title="">pairs</var> to Unicode by interpreting the

Received on Tuesday, 27 September 2011 19:10:23 UTC