如何将unicode char放入NSString中

时间:2015-04-05 05:57:03

标签: ios objective-c unicode nsstring

例如,我可以输入表情符号字符代码,例如:

NSString* str = @"";
NSLog(@"%@", str);

微笑表情符号将在控制台中显示。

也许代码编辑器和编译器会以UTF-8交换文字。

现在我正在使用一个完整的unicode,我的意思是每个字符为32位,环境并且我已经获得了表情符号的unicode,我想将32位unicode转换为NSString例如:< / p>

int charcode = 0x0001F60A;
NSLog(@"%??", charcode);

问题是我应该把什么放在&#34; ??&#34;位置,然后我可以将charcode格式化为表情符号字符串?

BTW charcode是一个在编译时无法确定的变量。

我不想将32位int压缩成UTF-8字节,除非这是唯一的方法。

2 个答案:

答案 0 :(得分:2)

如果0x0001F60A是在运行时确定的动态值,那么 您可以使用NSString方法

- (instancetype)initWithBytes:(const void *)bytes length:(NSUInteger)len encoding:(NSStringEncoding)encoding;

创建一个包含具有给定Unicode值的字符的字符串:

int charcode = 0x0001F60A;
uint32_t data = OSSwapHostToLittleInt32(charcode); // Convert to little-endian
NSString *str = [[NSString alloc] initWithBytes:&data length:4 encoding:NSUTF32LittleEndianStringEncoding];
NSLog(@"%@", str); // 

答案 1 :(得分:1)

使用NSString初始化方法

int charcode = 0x0001F60A;
NSLog(@"%@", [[NSString alloc] initWithBytes:&charcode length:4 encoding:NSUTF32LittleEndianStringEncoding]);