使用NSFileHandle读取文件中指定位置的指定长度,内容为中文的txt是乱码//到本地读取相关书籍(先显示第一页的,然后可以再上一页下一页)  路径、当前页、读取的文件字节数(每页显示的)
-(void)bookName:(NSString *)name bookcurrent:(NSInteger)bookcurrentPage bookpageEvery:(NSInteger)pageEveryByte {
    //文件路径
    NSString *bookpathname = [NSString stringWithFormat:@"Documents/%@",name];
    NSString *filename = [NSHomeDirectory() stringByAppendingPathComponent:bookpathname];
    //读取数据
    NSFileHandle *filehand = [NSFileHandle fileHandleForReadingAtPath:filename];
    //将光标定位到要读取的开始位置
    [filehand seekToFileOffset:bookcurrentPage * pageEveryByte];
    //读取的每页数据
    NSData *chunk = [filehand readDataOfLength:pageEveryByte];
    //将读取的数据进行转换
    NSString * line = [[NSString alloc] initWithData:chunk encoding:NSUTF8StringEncoding];
    //将读取出来的数据读取到控件上
    textview.text = line;
}如上代码,line为乱码,有时为null,请问怎么回事? 

解决方案 »

  1.   

    本地文件的内容是什么编码的?
    NSString * line = [[NSString alloc] initWithData:chunk encoding:NSUTF8StringEncoding];
    如果文件内容不是UTF8的就会出问题了.
      

  2.   

    怎么看编码啊,我怎么看不到,我本来新建一个rtf类型的文件,强制改后缀名为txt,读出来乱码。后来新建一个rtf类型文件读取,也还是乱码,试了NSUTF8StringEncoding\NSASCIIStringEncoding都不行
      

  3.   

    我应代码创建一个utf8格式的txt,然后用NSFileHandle读取,只有一次是可以的,但后来就都不行了。如果用NSFileManager读取全部时,是可以的,这个NSFileHandle读取中文真烦啊
      

  4.   

    用文本工具 保存的时候以UTF-8的格式保存 然后读取这个文件 你看看是否还是乱码.......
      

  5.   


    在苹果电脑上,保存文本时,根本就没看到有 选择文本格式  这一项,就直接保存了,所以不知道什么格式。
    我在XP上保存了UTF8格式的文本,然后拷到苹果电脑上,读取,还是乱码,要么就null
      

  6.   

    你使用十六进制查看工具查看下文件,数据有没有问题;
    另外,注意下,UTF8, Unicode格式数据是否包含了标志位, 类似FF FE这样的东西,是否需要去掉读取。