编码格式的转换与使用

    因为做前面的阅读器的需要,所以对编码格式做了些了解。当预览.doc\.pdf\.docx等需要第三方软件调用的文件是,预览没有问题。但当预览txt文本时,很多编码格式的txt就无法预览了,缺省用GB_18030_2000和utf16格式编码就能打开。所以为了使预览能打开txt,我在打开之前做了些工作,先判断列表文件里有没有txt,如果有的话就用编码读取,如果用GB_18030_2000、utf16、utf8这三种编码读出来成功的话,就另存为kCFStringEncodingGB_18030_2000格式。代码如下:

if ([tempExtName isEqual:@"txt"])
    {
        self.bookContent = [[NSString alloc]initWithContentsOfFile:bookPath encoding:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000) error:nil];
        if (!self.bookContent) {
            self.bookContent = [[NSString alloc]initWithContentsOfFile:bookPath encoding:CFStringConvertEncodingToNSStringEncoding(NSUTF8StringEncoding) error:nil];
        }
        if (!self.bookContent) {
            self.bookContent = [[NSString alloc]initWithContentsOfFile:bookPath encoding:CFStringConvertEncodingToNSStringEncoding(NSUTF16StringEncoding) error:nil];
        }
        if (!self.bookContent)
        {
            NSString *ss = [[NSString alloc]initWithContentsOfFile:bookPath];


            //NSString *ss =[[NSString alloc] initWithData:dd  encoding:NSUTF16StringEncoding];
            [ss  writeToFile:bookPath atomically:YES encoding:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000) error:nil];
        }
        NSLog(@"bookContent is %@",self.bookContent);
        if (self.bookContent)
        {
            //[self.bookContent writeToFile:bookPath atomically:YES];
            [self.bookContent writeToFile:bookPath atomically:YES encoding:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000) error:nil];
        }
    }

你可能感兴趣的:(编码格式的转换与使用)