-
先嘗試
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 }
如果(1)失敗晚岭。嘗試直接用UTF-8的編碼方式
如果(2)失敗。嘗試使用其他適當(dāng)?shù)木幋a,編碼方式取決你的數(shù)據(jù)來源恭陡。
如果(3)失敗蹬音。請(qǐng)嘗試使用
NSAttributedString
的方法。比如:initWithURL:options:documentAttributes:error:
打開txt文件
我下載本小說:mac上打不開這個(gè)txt文件
修改文本編輯的偏好設(shè)置后可以用文本編輯打開
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)
}