iOS编码问题-Unicode转UTF-8

【iOS编码问题-Unicode转UTF-8】公司项目使用的icon是阿里图标库的图标字体。
将图标下载到了项目中,在使用中发现"\u"后面必须跟4位16进制(否则编译报错),不能进行拼接处理。
所以需要将"\\ue670"(内容为一个整体Unicode的UTF-8字符串)转化为一个UTF-8的一个字符。
哈哈,也不知道说明白没有。
总之下面方法实现了该功能。

//Unicode转UTF-8 + (NSString*) replaceUnicode:(NSString*)aUnicodeString {NSString *tempStr1 = [aUnicodeString stringByReplacingOccurrencesOfString:@"\\u"withString:@"\\U"]; NSString *tempStr2 = [tempStr1 stringByReplacingOccurrencesOfString:@"\""withString:@"\\\""]; NSString *tempStr3 = [[@"\"" stringByAppendingString:tempStr2] stringByAppendingString:@"\""]; //tempStr3现在的值为@"\"\\ue670\"" NSData *tempData = [tempStr3 dataUsingEncoding:NSUTF8StringEncoding]; NSString* returnStr = [NSPropertyListSerialization propertyListFromData:tempData mutabilityOption:NSPropertyListImmutableformat:NULL errorDescription:NULL]; //通过NSPropertyListSerialization将NSData数据对象归档提取成String,这时候的returnStr就是 @"\ue670"了 return [returnStr stringByReplacingOccurrencesOfString:@"\\r\\n"withString:@"\n"]; }

其中使用到了NSPropertyListSerialization
官方解释为
The NSPropertyListSerialization class provides methods that convert property list objects to and from several serialized formats. Property list objects include NSData, NSString, NSArray, NSDictionary, NSDate, and NSNumber objects. These objects are toll-free bridged with their respective Core Foundation types (CFData, CFString, and so on). For more about toll-free bridging, see “Interchangeable Data Types”.
翻译为
NSPropertyListSerialization这个类提供了一些方法,专门用来转换不同组织形式的list对象.list对象包括了NSData, NSString, NSArray, NSDictionary, NSDate, 以及 NSNumber.这些对象与衍生出他们的祖先对象有着一些联系,对于toll-free bridging,请看“Interchangeable Data Types。

    推荐阅读