iOS 读取未知类型的txt文件
2017-01-16 本文已影响2082人
缭雾
-
先尝试
Try stringWithContentsOfFile:usedEncoding:error:
或者initWithContentsOfFile:usedEncoding:error:
方法。
这些方法会试图获取文件的编码,如果成功返回引用的编码使用。NSError *error ; NSStringEncoding encoding; NSString *content = [NSString stringWithContentsOfFile:path usedEncoding:&encoding error:&error]; if (error == nil) { NSLog(@"编码格式 %lu",encoding); //如utf-8编码的会得到4 }
-
如果(1)失败。尝试直接用UTF-8的编码方式
-
如果(2)失败。尝试使用其他适当的编码,编码方式取决你的数据来源。
-
如果(3)失败。请尝试使用
NSAttributedString
的方法。比如:initWithURL:options:documentAttributes:error:
打开txt文件
我下载本小说:mac上打不开这个txt文件
![](https://img.haomeiwen.com/i1196804/8148d09cf5921af1.png)
修改文本编辑的偏好设置后可以用文本编辑打开
![2017011665439txt偏好设置.png](http://oi6f4bkw5.bkt.clouddn.com/2017011665439txt%E5%81%8F%E5%A5%BD%E8%AE%BE%E7%BD%AE.png?imageView/2/w/400)
oc代码示例
- (void)readTxtFromPath:(NSString *)path{
//GBK
unsigned long encode = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
NSError *error ;
NSString *content = [NSString stringWithContentsOfFile:path encoding:encode error:&error];
if (error) {
NSLog(@"%@",error);
}else{
NSLog(@"content --%@",content);
}
}
swift 代码:
let path = Bundle.main.path(forResource: "金主顺毛守则", ofType: "txt");
let cfEnc = CFStringEncodings.GB_18030_2000
let enc = CFStringConvertEncodingToNSStringEncoding(CFStringEncoding(cfEnc.rawValue))
do {
let ret = try NSString.init(contentsOfFile: path!, encoding: enc)
print(ret)
}catch let error as NSError {
print(error)
}