[EMAIL PROTECTED] wrote: > ... > Else if U+0800 <= U <= U+D7FF, or if U+E000 <= U <= U+FFFF, then > C1 = U \ x1000 + xE0 > C2 = (U mod x1000) \ x40 + x80 > C3 = U mod x40 + x80 > Else if U >= U+FFFF, then
This looks like it includes U+FFFF in two branches. Well, you catch U+FFFF in the previous condition, but to make it cleaner you should change this to either > U+FFFF or >= U+10000. > C1 = U \ x40000 + xF0 > C2 = (U mod x40000) \ x1000 + x80 > C3 = (U mod 100016) \ x40 + x80 C3 = (U mod 0x1000) \ x40 + x80 ^^ ^^ (you knew that) > C4 = U mod x40 + x80 > Else > Error > End if markus