2

不正なシンボルをパーセント エスケープするために使用されるカテゴリ メソッドに問題があります。

これは私がタスクに使用しているコードです:

@implementation NSString (URLEncoding)
-(NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding {
    NSString *s = (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)self, NULL, (CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ",CFStringConvertNSStringEncodingToEncoding(encoding));
    NSLog(@"S: %@, Self: %@", s, self);
    return [s autorelease];
}
@end

上記の一致する文字列で見つかった記号のない文字列でこのメソッドを実行すると、メソッドは正常に実行され、同じ文字列が返されます。

たとえば、@"test"出力されるような文字列がある場合:

S: テスト、セルフ: テスト

しかし、代わりに次のような文字列を使用すると、次のよう@"test&symbols"に出力されます。

S: null、自己: test&symbols

したがって、CFURLCreateStringByAddingPercentEscapes の使用に何か問題があるようです。

& などの記号をエスケープしたいのは、クエリ文字列の値として使用される文字列で発生する可能性があり、クエリ文字列が誤って解釈される可能性があるためです。

ここで何が問題なのかについて何か考えはありますか?

前もって感謝します!/ マグナス

4

1 に答える 1

2

私の大きな間違いを見つけた後。
私は自分自身に質問に答えるように言われました。

NSStringEncodingメソッドに値を渡さなかったのは間違っていましNSUTF8StringEncodingたが、その代わりに などの CF 値を渡していましたkCFStringEncodingUTF8

値はコンバーターを介して渡され、エラーの原因となった CF 値になり、既に正しい型になっています。

ご不便をかけて申し訳ありません。

-マグナス

于 2012-05-09T08:03:47.053 に答える