Objective-C int convert to UTF-8



我想将这个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];

最新更新