Excel文件转plist文件出现的文件编码问题

今天在测试时遇到了需要将大量整理好的Excel数据转换为plist文件的情况.百度了一下教程,发现虽然别人也遇到过类似的情况,但是有些讲的还是不够细致.所以做如下整理.
 
百度到的内容中有使用MesaSQLite的情况,由于没有走通,在这里暂时不提.
 
实际处理过程如下:
 
1.转化excel文件到记事本文件.复制粘贴出来即可,这部分的操作我是在windows下进行的,使用的是excel跟notepad++.使用默认操作也导致后面遇到了一些问题.
 
2.直接将转化后的记事本文件拖入Xcode资源文件夹,点击预览到得情况如下,出现乱码:
 Excel文件转plist文件出现的文件编码问题
 
强行运行程序转换,程序没有报错,但是得到的plist文件只有文件头,实际有效数据为空.
代码如下:
    NSString *alarmPath = [[NSBundle mainBundle] pathForResource:@"GSK980M" ofType:@"txt"];
// NSLog(@"%@",alarmPath);
// 尝试更换文件编码,失败
// NSStringEncoding gbk = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
NSString *alarmContent = [[NSString alloc] initWithContentsOfFile:alarmPath encoding:NSUTF8StringEncoding error:nil];
// NSLog(@"%@",alarmContent); NSArray *alarmArray = [alarmContent componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
// NSLog(@"%@",alarmArray);
NSString *docuPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSString *plistPath = [docuPath stringByAppendingPathComponent:@"GSK980M.plist"];
NSLog(@"%@",plistPath);
NSMutableArray *resultsArr = [NSMutableArray array];
for (NSInteger j = 0; j < alarmArray.count; j++){
NSString *alarmStr = [alarmArray objectAtIndex:j];
// NSLog(@"%@",alarmStr);
NSArray *alarmArr = [alarmStr componentsSeparatedByString:@";"];
[resultsArr addObject:@{@"alarmID":[alarmArr objectAtIndex:0],@"alarmType":[alarmArr objectAtIndex:1],@"alarm":[alarmArr objectAtIndex:2],@"clearType":[alarmArr objectAtIndex:3],@"alarmContent":[alarmArr objectAtIndex:4]}];
}
[resultsArr writeToFile:plistPath atomically:YES];

  

 
3.搜索,确认为文件编码的问题.开始考虑转换记事本文件的编码,使用MAC自带的文本编辑.app没能发现保存为UTF-8的选项.继续百度,得到关键的信息.
在文本编辑器中按下快捷键:shift⇧+command⌘+T.
再保存的时候就会出现:
Excel文件转plist文件出现的文件编码问题
然后保存即可.
 
4.此时,重新将文件拖入资源目录,预览中已经显示正常:
Excel文件转plist文件出现的文件编码问题
重新运行程序,得到需要的plist文件. 
上一篇:Java学习之IO之File类一


下一篇:从java文件和CS文件里查询方法使用次数工具