MST

星途 面试题库

面试题:Objective-C字符串处理中如何高效处理编码转换

在Objective-C开发中,经常会遇到不同编码格式的字符串需要转换,比如UTF - 8与GBK之间的转换。请描述实现高效编码转换的思路和可能用到的方法,并且写出关键代码片段。
37.2万 热度难度
编程语言Objective-C

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 了解编码格式:UTF - 8是一种变长编码,可表示Unicode字符集中所有字符,常用于网页、数据库等。GBK是中文编码,兼容GB2312,主要用于简体中文环境。
  2. 使用Foundation框架:利用NSStringNSData类进行转换。NSString处理文本,NSData处理字节数据。从NSString转换为NSData时指定源编码,从NSData转换回NSString时指定目标编码。

可能用到的方法

  1. NSStringdataUsingEncoding:allowLossyConversion:方法:将NSString转换为NSData,其中encoding参数指定源编码,allowLossyConversion决定是否允许有损转换。
  2. NSStringinitWithData:encoding:方法:从NSData创建NSStringencoding参数指定目标编码。

关键代码片段

// UTF - 8转GBK
NSString *utf8String = @"需要转换的UTF - 8字符串";
NSData *utf8Data = [utf8String dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:NO];
NSString *gbkString = [[NSString alloc] initWithData:utf8Data encoding:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000)];

// GBK转UTF - 8
NSString *gbkOriginalString = @"需要转换的GBK字符串";
NSData *gbkData = [gbkOriginalString dataUsingEncoding:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000) allowLossyConversion:NO];
NSString *utf8ConvertedString = [[NSString alloc] initWithData:gbkData encoding:NSUTF8StringEncoding];