apple文档
Apple官方文档: Reading data with an unknown encoding
- 先尝试
Try stringWithContentsOfFile:usedEncoding:error:
或者initWithContentsOfFile:usedEncoding:error:
方法。
这些方法会试图获取文件的编码,如果成功返回引用的编码使用。
``` objc
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文件
修改文本编辑的偏好设置后可以用文本编辑打开
oc代码示例
- (void)readTxtFromPath:(NSString *)path{
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)
}
uchardet 库
借助第三方库uchardet