Rick Cameron asked: > Are you planning to add an explicit statement to the Unicode standard that > the valid range for scalar values is 0..10FFFF? (Or is such a statement > there, and I've just missed it?)
Unicode 3.0, p. 45, D28: Unicode scalar value: a number N from 0 to 10FFFF<sub>16</sub>... and p. 46, D29, second bullet: * Any sequence of code values that would correspond to a scalar value greater than 10FFFF<sub>16</sub> is illegal. > > In the absence of such a statement, I think it's very easy for people to get > the idea that the range of scalar values is unbounded above, and that any > limit is a property of a particular encoding. > > In particular, as the use of 32-bit variables to hold Unicode characters > becomes more common (apparently most unices make wchar_t 32 bits wide), many > will imagine that such a variable represents a 32-bit encoding of Unicode, > with range 0..FFFFFFFF, where it just happens that every value above 10FFFF > is unassigned. > > I am one such person (but no longer!) > > Of course, the Unicode Standard 3.0 doesn't even mention a 32-bit encoding - > but that's not stopping uniphiles from storing Unicode data in their > wchar_t's! It's the Unicode Standard 3.1 that you need to be referring to. UTF-32 was incorporated into the standard at that point. See http://www.unicode.org/unicode/reports/tr27/ --Ken

