无法获得正确的unicode符号来显示

时间:2012-09-11 15:58:06

标签: objective-c ios fonts

我在我的iOS应用中使用http://symbolset.com图标,但无法正确显示相机符号。在symbolset docs和FontForge中,它表示unicode值为1F4F7。

以下是相关代码:

[self setTitle:[NSString stringWithFormat:@"%C", (unichar)0x1F4F7] forState:controlState];

我也尝试过:

[self setTitle:[NSString stringWithFormat:@"%C", (unichar)0x0001F4F7] forState:controlState];

但是这适用于复选标记符号:

[self setTitle:[NSString stringWithFormat:@"%C", (unichar)0x2713] forState:controlState];

字体是开放式的。我也尝试将unicode值放在我的Localizable.strings文件中,但是没有用。我需要将其设为TrueType字体吗?

更新:我尝试过转换为TrueType字体并遇到同样的问题。

1 个答案:

答案 0 :(得分:3)

问题是unichar只有16位,但你想要的字符在基本多语言平面(BMP)之外,因此在UTF-16(代理对)中需要2个字符。你可以弄清楚这一对,或做类似的事情:

UTF32Char c = 0x1F4F7;
NSData *utf32Data = [NSData dataWithBytes:&c length:sizeof(c)];
NSString *camera = [[NSString alloc] initWithData:utf32Data encoding:NSUTF32LittleEndianStringEncoding];

//do stuff with camera here and release if not using ARC