I’ve got an international character stored in a unichar variable. This character does not come from a file or url. The variable itself only stores an unsigned short(0xce91) which is in UTF-8 format and translates to the greek capital letter ‘A’. I’m trying to put that character into an NSString variable but i fail miserably.
I’ve tried 2 different ways both of which unsuccessful:
unichar greekAlpha = 0xce91; //could have written greekAlpha = 'Α' instead.
NSString *theString = [NSString stringWithFormat:@"Greek Alpha: %C", greekAlpha];
No good. I get some weird chinese characters. As a sidenote this works perfectly with english characters.
Then I also tried this:
NSString *byteString = [[NSString alloc] initWithBytes:&greekAlpha
length:sizeof(unichar)
encoding:NSUTF8StringEncoding];
But this doesn’t work either.
I’m obviously doing something terribly wrong, but I don’t know what.
Can someone help me please ?
Thanks!
Since
0xce91is in the UTF-8 format and%Cexpects it to be in UTF-16 a simple solution like the one above won’t work. ForstringWithFormat:@"%C"to work you need to input0x391which is the UTF-16 unicode.In order to create a string from the UTF-8 encoded unichar you need to first split the unicode into it’s octets and then use
initWithBytes:length:encoding.