I want to make an array of Unicode characters, but I don't know how to convert integers into a Unicode representation. Here's the code I have so far
NSMutableArray *uniArray = [[NSMutableArray alloc] initWithCapacity:0];
int i;
for (i = 32; i < 300; i++) {
NSString *uniString = [NSString stringWithFormat:@"\u%04X", i];
[uniArray addObject:uniString];
}
Which gives me an error "incomplete universal character name \u"
Is there a better way to build an array of Unicode symbols? Thanks.
You should use %C to insert a unicode character:
NSMutableArray *uniArray = [[NSMutableArray alloc] initWithCapacity:0];
int i;
for (i = 32; i < 300; i++) {
NSString *uniString = [NSString stringWithFormat:@"%C", i];
[uniArray addObject:uniString];
}
Another (better?) way is using stringWithCharacters:
NSMutableArray *uniArray = [[NSMutableArray alloc] initWithCapacity:0];
int i;
for (i = 32; i < 300; i++) {
NSString *uniString = [NSString stringWithCharacters:(unichar *)&i length:1];
[uniArray addObject:uniString];
}
The reason for the error is that \u
must be followed by four hexadecimal digits at compile time. You've followed it with “%04x
”, apparently with the intent of inserting those four hexadecimal digits at run time, which is too late—the compiler has long ago finished its work by then, and the compiler is what is giving you this error.
If you want a single UTF-16 character, [NSString stringWithCharacters:&character length:1]
. If it’s UTF-32, you’d have to convert to surrogate pairs, or use -initWithData:encoding:
, or try what Philippe said (I’m not sure offhand whether that handle’s UTF-32 properly, but it should).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With