2011-08-19 61 views
3

我有一個NSDictionary與UTF8字符串作爲對象。打印對象時應該打印特殊字符。NSDictionary描述不返回utf8字符?

但是,當我使用description方法將字典轉換爲字符串時,utf8字符無法正確打印出來。

NSDictionary *test = [NSDictionary dictionaryWithObject:@"Céline Dion" forKey:@"bla"]; 
NSLog(@"%@",[test objectForKey:@"bla"]); // prints fine 
NSLog(@"%@",test);      // does not print fine, é is replaced by \U00e 
NSLog(@"%@",[test description]);   // also does not print fine 

如何在保留utf8字符的同時打印NSDictionary?

+0

爲什麼你需要'-description'?這很重要嗎?你需要的一切是'-valueForKey'(或'-objectForKey')和* it *正常工作。 – akashivskyy

+1

我想將整個請求打印到文本視圖 - 是的,它只是用於開發,但正確地打印utf8字符會更好。我想知道我是否做錯了什麼。 – fabb

回答

2

我不會擔心-description做什麼,它只是進行調試。

從技術上講,你沒有UTF-8字符串。你有字符串(這是Unicode)。你不知道NSString在內部使用什麼,你不應該在意。如果你想要一個UTF-8字符串(就像你傳遞給C API),使用-UTF8String。

+0

請記住,將對象轉換爲字符串會調用「-description」。 –

+0

你的意思是在NSLog?這也是爲了調試。 –

0

的一種方式,但我不能在此刻檢查:

NSString *decodedString = [NSString stringWithUTF8String:[[test description] cStringUsingEncoding:[NSString defaultCStringEncoding]]]; 
NSLog(@"%@",decodedString); 
+0

似乎不起作用,結果相同。 – fabb