【iPhone】UIWebview加载网上的txt文件显示乱码的问题

最近要显示网上的word、ppt、excel、txt等文件,暂时先使用UIWebview加载显示,其他的都ok,但是显示txt时却显示乱码。
找了各种方法,暂时解决了,记录如下:

NSStringEncoding * usedEncoding = nil;
        //带编码头的如 utf-8等 这里会识别
        NSString *body = [NSString stringWithContentsOfURL:url usedEncoding:usedEncoding error:nil];
        if (!body) 
        {
            //如果之前不能解码,现在使用GBK解码
            NSLog(@"GBK");
            body = [NSString stringWithContentsOfURL:url encoding:0x80000632 error:nil];
        }
        if (!body) {
            //再使用GB18030解码
            NSLog(@"GBK18030");
            body = [NSString stringWithContentsOfURL:url encoding:0x80000631 error:nil];
        }
        if (body) {
            [webView loadHTMLString:body baseURL:nil];
        }
        else {
            NSLog(@"没有合适的编码");
        }

这样就解决了乱码问题,但是里面文字不会换行,所以又使用了以下方法:

NSData* Data = [NSData dataWithContentsOfURL:url];
        NSString* aStr = [[NSString alloc] initWithData:Data encoding:0x80000632];
        NSString* responseStr = [NSString stringWithFormat:
                                 @"<HTML>"
                                 "<head>"
                                 "<title>Text View</title>"
                                 "</head>"
                                 "<BODY>"
                                 "<pre>"
                                 "%@"
                                 "/pre>"
                                 "</BODY>"
                                 "</HTML>",
                                 aStr];
        [webView loadHTMLString:responseStr baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]];
        [aStr release];

##########################
最终,用UIWebView显示TXT还是非常不靠谱的啊,显示效果太差(显示word 、pdf等还不错),所以最终结果是下载txt,然后用UITextView来显示

NSString *context = [NSString stringWithContentsOfFile:[kDocPath stringByAppendingPathComponent:self.fileName] encoding:0x80000632 error:nil];
        _readView.scrollEnabled = YES;
        [_readView setTextColor:[UIColor blackColor]];
        [_readView setEditable:NO];
        [_readView setFont:[UIFont systemFontOfSize:15.0f]];
        [_readView setText:context];

发表评论

电子邮件地址不会被公开。 必填项已用*标注