我想将这个int num:53392
转换为西里尔字母A
。我使用这个:NSString *string = [NSString stringWithFormat:@"%c", 53392];
,但现在这个可以正常工作,并返回给我奇怪的符号。有人能帮我吗?
首先,使用%C
格式(大写字母C)。其次,cyrillic A的代码是0x0410,而不是您的号码。
创建包含unicode字符的NSString的正确方法是使用字符串WithUTF8String和\u####转义序列,如下所示:
NSString *aString = [NSString stringWithUTF8String:"To be continuedu2026"];
您拥有的整数53392是一个整数中的两个字节0xD0和0x90,它们是Unicode 0x410(十进制1040)cyrillic大写字母A的UTF-8编码。
转换有多种方法,这里有两种。
如果您知道UTF-8序列(如果需要,可以从整数中提取),则可以使用以下序列将其转换为NSString
:
char buf[2];
buf[0] = 0xD0;
buf[1] = 0x90;
NSString *cyrillicA = [[NSString alloc] initWithBytes:buf length:2 encoding:NSUTF8StringEncoding];
如果您知道UTF-16值,您可以使用%C格式:
NSString *cyrillicA = [NSString stringWithFormat:@"%C", 0x410];