Thanks everyone for helping.

This solved my problem on how to handle characters outside the 16 bits range.

Anders Lassen

On Sep 25, 2009, at 8:57 PM, Aki Inoue wrote:

The Unicode values beyond 16bit range are represented with a pair of UTF-16 characters in U+D800 ~ U+DFFF.

See relevant items in <http://unicode.org/glossary/#S> for the definitions.

There are several ways to insert UTF-32 values into NSString.
Doug mentioned some.

The easiest is to use the C99 universal character name.

For example, U+1D400 can be represented with @"\U0001D400" using compliers shipped with Xcode 3.0 or later.

Another approach is to use an array of UTF-32 characters and convert with NSUTF32StringEncoding.

UTF32Char character = 0x0001D400;
#if __BIG_ENDIAN__
NSStringEncoding encoding = NSUTF32BigEndianStringEncoding;
#else
NSStringEncoding encoding = NSUTF32LittleEndianStringEncoding;
#endif
NSString *string = [[NString alloc] initWithBytes:&character length:sizeof(character) encoding:encoding];

Or, you could fill a UTF-16 buffer and create from it using new inline functions introduced with SnowLeopard.
UniChar characters[2];
NSString *string;

CFStringGetSurrogatePairForLongCharacter(0x0001D400, characters);
string = [[NSString alloc] initWithCharacters:characters length:2];

Aki

On 2009/09/25, at 11:33, Anders Lassen wrote:

I have tried this but gave up, because I did not now of surrogate pairs.

But I will try again.

Anders Lassen

On Sep 25, 2009, at 8:27 PM, Douglas Davidson wrote:


On Sep 25, 2009, at 11:18 AM, Anders Lassen wrote:

But still, I can not see, how this solve my problem getting characters outside the unicode 16 bits range into a NSString.

NSString is conceptually UTF-16, which means that characters outside the BMP are represented using surrogate pairs. However, for purposes of getting them into an NSString, you can (for example) represent them in UTF-32 and use one of the conversion methods. Alternatively, you could put them in a file, maybe a text file or a plist, and let the standard import methods deal with encoding issues.

Douglas Davidson


_______________________________________________

Cocoa-dev mailing list ([email protected])

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/aki%40apple.com

This email sent to [email protected]


_______________________________________________

Cocoa-dev mailing list ([email protected])

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to