4

この関数を使用して文字列から URL を取得していますが、どうすれば元に戻すことができますか?

- (NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding forString:(NSString *)string {
    string = (__bridge NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, (__bridge CFStringRef)string, NULL, (CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ", CFStringConvertNSStringEncodingToEncoding(encoding));
    return string;
}
4

4 に答える 4

15
[string stringByReplacingPercentEscapesUsingEncoding:NSUTF8Encoding];

ところで。NSURLファイルの URL に使用する場合は[url path]、 ではなく、エスケープされていないパス文字列を取得するために使用して[url absoluteString]ください。

于 2012-11-27T02:25:21.200 に答える
7

使用する

NSString *urlString = [url absoluteString];

この目的のために。

于 2012-06-29T13:43:34.770 に答える
0

このコードを使用してください..

NSError* error = nil;
NSString* text = [NSString stringWithContentsOfURL:your_url encoding:NSASCIIStringEncoding error:&error];

これはあなたを助けるかもしれません

于 2012-06-29T13:59:02.807 に答える
-1

私は自分で答えを見つけました:

- (NSString *)decodedURLString {
    NSString *string = (__bridge NSString*)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(kCFAllocatorDefault,
                                                                                          (CFStringRef)self,
                                                                                          CFSTR(""),
                                                                                          CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));

    return string;
}

およびエンコードの場合:

- (NSString *)encodedURLString {
    NSString *string = (__bridge NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
                                                                           (CFStringRef)self,
                                                                           NULL,
                                                                           CFSTR(":/=,!$&'()*+;[]@#?"),
                                                                           CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));

    return string;
}
于 2012-10-27T15:26:58.087 に答える