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。
推荐阅读
- parallels|parallels desktop 解决网络初始化失败问题
- jhipster|jhipster 升级无效问题
- 2020-04-07vue中Axios的封装和API接口的管理
- “精神病患者”的角度问题
- 解决SpringBoot引用别的模块无法注入的问题
- iOS中的Block
- Hive常见问题汇总
- 姚老师互动问答会|姚老师互动问答会 # 问题001(如何更有智慧的和身边人分享金刚智慧())
- 【Hadoop踩雷】Mac下安装Hadoop3以及Java版本问题
- 【教育故事】|【教育故事】 一个“问题学生”的蜕变