Проблема в XML-декодере Xcode - PullRequest
       34

Проблема в XML-декодере Xcode

0 голосов
/ 25 августа 2011

Я хочу декодировать XML-файл.URL-адрес http://bbs.byhh.net/morecommend.xml Этот файл закодирован с помощью gb2312.Поэтому я просто перенес метод кодирования с gb2312 на UTF-8.

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];         
NSString *urlStr = @"http://bbs.byhh.net/morecommend.xml";
[request setURL:[NSURL URLWithString:urlStr]];
[request setHTTPMethod:@"GET"];


NSData *returnData = [NSURLConnection sendSynchronousRequest:request  returningResponse:nil error:nil]; 

//NSLog(@"%@", returnData);


NSString *results = [[NSString alloc] initWithBytes:[returnData bytes] length:[returnData length] encoding:0x80000632];//gb2312 0x80000632 where the string becomes null

NSString *newresults = [results stringByReplacingOccurrencesOfString:@"gb2312" withString:@"UTF-8"];
NSData *newData = [newresults dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"results=%@",new);



NSXMLParser *xmlParser = [[NSXMLParser alloc]initWithData:newData];
BOOL suc = [xmlParser parse];

if (suc == YES) {
    NSLog(@"success");
}

else{
    NSLog(@"fail");
}

[results release];
[request release];

Странно то, что я действительно получаю возвращаемые данные.Также я попытался записать это в файл.Файл является правильным XML-файлом с правильным форматом.Но когда я передаю данные в строку.Строка становится нулевой.Я не знаю, что не так.

1 Ответ

0 голосов
/ 12 сентября 2011

NSString.h ничего не знает о gb2312 или включает 0x80000632 в качестве допустимого NSStringEncoding. Попробуйте использовать эквивалент Core Foundation, чтобы создать CFStringRef и привести его к NSString *:

NSString *results = (NSString *)CFStringCreateWithBytes(NULL, [returnData bytes], 
        [returnData length], kCFStringEncodingGB_2312_80, true);
...