我有一个带有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?
答案 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);