[Python-Dev] UCS2/UCS4 default

Adam Olsen rhamph at gmail.com
Thu Jul 3 20:50:57 CEST 2008


On Thu, Jul 3, 2008 at 11:35 AM, Jeroen Ruigrok van der Werven
<asmodai at in-nomine.org> wrote:
> -On [20080703 19:21], Adam Olsen (rhamph at gmail.com) wrote:
>>On Thu, Jul 3, 2008 at 7:57 AM, M.-A. Lemburg <mal at egenix.com> wrote:
>>> Please remember that lone surrogate pair code points are perfectly
>>> valid Unicode code points, nevertheless. Just as a lone combining
>>> code point is valid on its own.
>>
>>That is a big part of these problems.  For all practical purposes, a
>>surrogate is like a UTF-8 code unit, and must be handled the same way,
>>so why the heck do they confuse everybody by saying "oh, it's a code
>>point too!"?
>
> Because surrogate code points are not Unicode scalar values, isolated UTF-16
> code units in the range 0xd800-0xdfff are ill-formed. (D91 from Unicode
> 5.0/5.1, section 3.9)
>
> So, no, it is not a code point too.


UTF-16
D91 UTF-16 encoding form: The Unicode encoding form that assigns each
Unicode scalar
     value in the ranges U+0000..U+D7FF and U+E000..U+FFFF to a single unsigned
     16-bit code unit with the same numeric value as the Unicode
scalar value, and that
     assigns each Unicode scalar value in the range U+10000..U+10FFFF
to a surrogate
     pair, according to Table 3-5.
   • In UTF-16, the code point sequence <004D, 0430, 4E8C, 10302> is represented
     as <004D 0430 4E8C D800 DF02>, where <D800 DF02> corresponds to
     U+10302.
   • Because surrogate code points are not Unicode scalar values,
isolated UTF-16
     code units in the range D80016..DFFF16 are ill-formed.

In the context of UTF-8 or UTF-32, a Unicode scalar value is a single
code point of a valid character (more or less) and a code unit is the
base unit (1 and 4 bytes respectively) of which 1 or more combine to
form a code point.  In UTF-16, code point becomes synonymous with code
unit and Unicode scalar value becomes one or more code points.  WTF?

-- 
Adam Olsen, aka Rhamphoryncus


More information about the Python-Dev mailing list