2015-04-05 35 views
1

比如我可以輸入表情符號的字符代碼,如:如何放置Unicode字符成的NSString

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

微笑的表情符號會在控制檯中看到。

也許代碼編輯器和編譯器會以UTF-8交易文字。

現在我在一個完整的Unicode的工作,我的意思是每個字符,環境的32位和我有表情符號的unicode的,我想32位的Unicode字符轉換成的NSString例如:

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

問題是我應該把什麼放在「??」位置,然後我可以將charcode格式化爲表情符號字符串?

順便說一句charcode是一個變量,在編譯時無法確定。

我不想壓縮的32位INT爲UTF-8字節,除非這是唯一的出路。

+0

,我不明白你的問題是你的意思還是什麼,但是你可以用'@「\ U0001F60A」' – 2015-04-05 06:11:44

+0

的燒烤代碼是動態的,例如從數據庫讀取或其他地方 – jayatubi 2015-04-05 06:42:15

回答

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); // 
+0

感謝的人。我一直在尋找解決方案很長一段時間。 – jayatubi 2015-04-05 07:06:30

1

使用NSString初始化方法

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