2012-10-16 73 views
1

我正在製作一個應用程序,將內容從UITextField發佈到PHP腳本,並存儲在數據庫中以供稍後閱讀。我有一次與emojis合作。Emojis顯示爲框

使用JSON,我會得到這樣的回答:

content = "\Uf44d"; 
id = 104; 
time = 1350359055; 

在這種情況下,我使用的表情符號。但是當我做[dictionary objectForKey:@"content"],一個盒子剛剛出現。

我想我需要轉換爲UTF-8。但我不完全確定。請幫忙!

回答

0

是在「專用區」 U+E000..U+F8FF一個Unicode字符,所以這可能不是你想要顯示的字符。

另一方面,U+1F44D是「THUMBS UP SIGN」,因此您的Web服務可能不會爲大於0xFFFF的Unicode字符創建正確的JSON響應。

根據JSON RFC,不屬於「Basic Multilingual Plane」的字符可以使用UTF-16代理對進行轉義。對於U+1F44D字符,JSON Unicode轉義序列將是「\ ud83d \ udc4d」。

下面的代碼顯示了它的工作原理一般:

const char *s = "{ \"content\": \"\\ud83d\\udc4d\", \"id\": 104, \"time\": 1350359055 }"; 
NSData *jsonData = [NSData dataWithBytes:s length:strlen(s)]; 
NSError *error; 
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error]; 
self.label.text = [jsonDict objectForKey:@"content"]; 

這顯示「讚許SIGN」正確的標籤。

但是,您不必轉義字符,Web服務也可以發送UTF-8序列。

1

我希望這會幫助你...我使用這個和e106是我的表情符號代碼。

內容下面一行行只有replcare:

content = [NSString stringWithFormat:@"%C", 0xe106];