<html><head><base href="x-msg://1627/"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On May 16, 2011, at 2:23 PM, Shawn Steele wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div lang="EN-US" link="blue" vlink="purple"><div class="WordSection1" style="page: WordSection1; "><div style="margin-top: 0in; margin-right: 0in; margin-bottom: 0.0001pt; margin-left: 0in; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">Iím having some (ok, a great deal of) confusion between the DOM Encoding and the JavaScript encoding and whatever.  Iíd assumed that if I had a web page in some encoding, that it was converted to UTF-16 (well, UCS-2), and thatís what the JavaScript engine did itís work on.  I confess to not having done much encoding stuff in JS in the last decade.<o:p></o:p></span></div><div style="margin-top: 0in; margin-right: 0in; margin-bottom: 0.0001pt; margin-left: 0in; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); "><o:p> </o:p></span></div><div style="margin-top: 0in; margin-right: 0in; margin-bottom: 0.0001pt; margin-left: 0in; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">In UTF-8, individually encoded surrogates are illegal (and a security risk).  Eg: you shouldnít be able to encode D800/DC00 as two 3 byte sequences, they should be a single 6 byte sequence.  Having not played with the js encoding/decoding in quite some time, Iím not sure what they do in that case, but hopefully it isnít illegal UTF-8.  (You also shouldnít be able to have half a surrogate pair in UTF-16, but many things are pretty lax about that.)</span></div></div></div></span></blockquote><br></div><div>I don't know enough about DOM behavior as I probably should, but the implication of the DOMString spec. is that if HTML source code contains a text element with supplemental characters (using any encoding recognized by a browser) then if the text of that element is accessed from JavaScript it will see each supplemental character as two JavaScript character that taken together are the UTF-16 encoding of the original supplemental character.  I'm not proposing any changes in that regard.</div><div><br></div><div>There is a chicken and egg issue here.  The DOM will never evolved to directly support non UTF-16 encoded supplemental characters unless ECMAScript first provides such support. It may take 20 years to get there but that clock won't even start until ECMAScript provides the necessary support.</div><div><br></div><div>Allen</div><div><br></div><div><br></div><br></body></html>