【问题标题】:NSMutableData to NSString give nilNSMutableData 到 NSString 给 nil
【发布时间】:2011-11-14 22:25:29
【问题描述】:

我正在使用我的应用 NSURLConnection 来获取网站的网页。

这就是我调用 NSURLConnection 的方式

NSURL *url = [NSURL URLWithString:@"http://jokes.moment.co.il/default.asp?s1=4&s2=0"];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [NSURLConnection connectionWithRequest:request delegate:self];

这就是我附加我得到的数据的方式:

-(void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    if (receivedData)
    {
        [receivedData appendData:data];
    }
    else 
    {
        receivedData = [[NSMutableData alloc] initWithData:data];
    }
}

这就是我尝试将其转换为 NSString 的方式:

-(void) connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSString *string = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding];
}

receivedData 是 47586 字节,当我进行转换时,字符串为零

【问题讨论】:

    标签: iphone objective-c


    【解决方案1】:

    快速查看您的 URL 的内容表明内容类型是 ISO-8859-1

    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
    

    尝试将您对 initWithData 的调用更改为...

    [[NSString alloc] initWithData:nsdata encoding:NSISOLatin1StringEncoding];
    

    【讨论】:

      【解决方案2】:

      很可能接收到的字符串没有被有效地编码为 NSUTF8StringEncoding。

      您可能需要将字符串写入文件系统,然后使用通过 NSError** 参数描述任何转换错误的 NSString 方法之一来了解确切的错误。

      【讨论】:

        猜你喜欢
        • 2019-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-07
        • 1970-01-01
        • 1970-01-01
        • 2020-05-25
        • 1970-01-01
        相关资源
        最近更新 更多