4

XML / NSMutableURLRequestを使用してWebサイトからコンテンツをプルしていますが、「カーリー」スタイルのアポストロフィと引用符を「」ではなく「プル」する場合があります。NSMutableURLRequestはこれらを嫌うようで、奇妙な\ U00e2 \ U0080\U0099文字列に変換します。

これを防ぐために私にできることはありますか?GETメソッドを使用しているので、どういうわけかUTF-8を使用するように指示する必要がありますか?または、私は何かが欠けていますか?

UIApplication* app = [UIApplication sharedApplication];
    app.networkActivityIndicatorVisible = YES;

    NSString *urlStr = [NSString stringWithFormat:@"%@",url];
    NSURL *serviceUrl = [NSURL URLWithString:urlStr];
    NSMutableURLRequest *serviceRequest = [NSMutableURLRequest requestWithURL:serviceUrl];
    [serviceRequest setHTTPMethod:@"GET"];

    NSURLResponse *serviceResponse;
    NSError *serviceError;

    app.networkActivityIndicatorVisible = NO;

    return [NSURLConnection sendSynchronousRequest:serviceRequest returningResponse:&serviceResponse error:&serviceError];
4

3 に答える 3

5

NSURLConnectionNSData応答を返します。そのNSData応答を受け取り、それを文字列に変換できます。次に、この文字列を取得してNSDataオブジェクトに戻し、途中で適切にUTF-8でエンコードして、にフィードしNSXMLParserます。

例:(リクエストからresponseNSData応答であると想定)

// long variable names for descriptive purposes
NSString* xmlDataAsAString = [[[NSString alloc] initWithData:response] autorelease];
NSData* toFeedToXMLParser = [xmDataAsAString dataUsingEncoding:NSUTF8StringEncoding];
NSXMLParser* parser = [[[NSXMLParser alloc] initWithData:toFeedToXMLParser] autorelease];
// now utilize parser...
于 2011-01-28T03:47:34.120 に答える
0

stringByReplacingCharactersInRange:withString:不要な文字列を置き換えるために使用して、これらの文字を置き換えることをお勧めします。

NSString *currentTitle = @"Some string with a bunch of stuff in it.";

//Create a new range for each character.
NSRange rangeOfDash = [currentTitle rangeOfString:@"character to replace"];
NSString *location = (rangeOfDash.location != NSNotFound) ? [currentTitle substringToIndex:rangeOfDash.location] : nil;

if(location){
    currentTitle = [[currentTitle stringByReplacingOccurrencesOfString:location withString:@""] mutableCopy];
}

私は過去にあなたが説明したのと同じ問題を処理するためにこれを行いました。

于 2011-01-25T18:59:00.050 に答える
0

stringByReplacingPercentEscapesUsingEncodingを使用してみてください。

于 2011-01-25T18:59:38.833 に答える