iOS 读取未知类型的txt文件

Apple官方文档: Reading data with an unknown encoding

  1. 先尝试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
        }
    
  2. 如果(1)失败。尝试直接用UTF-8的编码方式

  3. 如果(2)失败。尝试使用其他适当的编码,编码方式取决你的数据来源。

  4. 如果(3)失败。请尝试使用NSAttributedString的方法。比如:initWithURL:options:documentAttributes:error:


打开txt文件

我下载本小说:mac上打不开这个txt文件

iOS 读取未知类型的txt文件_第1张图片
2017011670078novel.png

修改文本编辑的偏好设置后可以用文本编辑打开


2017011665439txt偏好设置.png

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)
}

你可能感兴趣的:(iOS 读取未知类型的txt文件)