我正在尝试从一个来自plist的数组中读取字符串并打印这些字符串。
数组中的字符串包含转义的UTF8字符-例如,当从plist中读取时,“Nuša Florjančič”变为"Nu\u0161a Florjan\u010di\u010d"
。无法更改plist的内容,但我的程序需要正确显示名称。
奇怪的是,当我在硬编码字符串时,Objective-C似乎会自动进行此操作。但是,如果我从plist获取字符串,则根本不会发生任何事情。
为了举例说明,这里有一些代码:
NSString *name1 = @"Nu\u0161a Florjan\u010di\u010d";
NSString *name2 = [list objectAtIndex:0];
NSLog(@"name 1: %@", name1);
NSLog(@"name 2: %@", name2);
[list objectAtIndex:0]
包含 @"Nu\u0161a Florjan\u010di\u010d"
- 唯一的区别是它是通过 plist 编辑器设置的。
控制台输出为:
2011-10-22 18:00:02.595 Test[13410:11c03] name 1: Nuša Florjančič
2011-10-22 18:00:02.595 Test[13410:11c03] name 2: Nu\u0161a Florjan\u010di\u010d
我尝试了各种方法,包括将字符串转换为C字符串,然后使用UTF-8编码创建一个NSString
对象,但一点用都没有。
如果您能提供任何指导,帮助我解决这个看似平凡的问题,我将不胜感激。
CFStringTransform
来执行此转换。 - rob mayoffCFStringTransform
进行此转换的例子。 - rob mayoff