NSDictionary描述没有返回utf8字符?

时间:2011-08-19 15:34:42

标签: ios nsdictionary

我有一个带有utf8字符串作为对象的NSDictionary。打印对象会按原样打印特殊字符。

但是当我使用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?

2 个答案:

答案 0 :(得分:2)

我不担心-description会做什么,只是为了调试。

从技术上讲,您没有UTF-8字符串。你有字符串(Unicode)。你不知道NSString在内部使用什么,你不应该在乎。如果你想要一个UTF-8字符串(比如当你传递给C API时),请使用-UTF8String。

答案 1 :(得分:0)

一种方式,但我现在无法检查它:

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