iOS 讀取未知類型的txt文件

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

  1. 先嘗試Try stringWithContentsOfFile:usedEncoding:error: 或者initWithContentsOfFile:usedEncoding:error:方法。
    這些方法會(huì)試圖獲取文件的編碼,如果成功返回引用的編碼使用。

        NSError *error ;
        NSStringEncoding encoding;
        NSString *content = [NSString stringWithContentsOfFile:path usedEncoding:&encoding error:&error];
        if (error == nil) {
            NSLog(@"編碼格式 %lu",encoding); //如utf-8編碼的會(huì)得到4
        }
    
  2. 如果(1)失敗。嘗試直接用UTF-8的編碼方式

  3. 如果(2)失敗。嘗試使用其他適當(dāng)?shù)木幋a,編碼方式取決你的數(shù)據(jù)來源。

  4. 如果(3)失敗。請(qǐng)嘗試使用NSAttributedString的方法。比如:initWithURL:options:documentAttributes:error:


打開txt文件

我下載本小說:mac上打不開這個(gè)txt文件

2017011670078novel.png

修改文本編輯的偏好設(shè)置后可以用文本編輯打開


2017011665439txt偏好設(shè)置.png
2017011665439txt偏好設(shè)置.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)
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容