4

URL をエンコードしようとしていますが、これまでに行ったことがないため、期待どおりの結果が得られないと混乱します。私はCFURLCreateStringByAddingPercentEscapesこれを行うために使用していますが、返されるものは、オンラインの URL エンコーダー/デコーダーのようには見えません。

-(void)urlEncodedString{


 NSString *str = @"\"Hi!! my name is John. \n What's your's?\"";

NSLog([(NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)str, NULL, CFSTR("!$&'()*+,-./:;=?@_~"), kCFStringEncodingUTF8) autorelease]);


}

私は次のようなものを期待していました:

%5C%22Hi%21%21%20my%20name%20is%20John.%20%5Cn%20What%27s%20your%27s%3F%5C%22

しかし、代わりに私は得ています:

2i2212yame 0s2ohn3.786691E-27020A2hat º»åå2our 0.0000002

それは正常ではありません。私は検索してすべてを試しましたが、私がやった方法は明らかにうまくいくはずです。誰かが私を正しい方向に向けることができますか?

4

1 に答える 1

5

パーセント記号を使用する書式設定NSLogの文字列を期待する最初の文字列として結果を渡しています。基本的に、各 % エスケープの代わりにメモリ内のランダム データで文字列を埋めています。Objective-C オブジェクト指定子を使用してこのログを修正するには:

NSLog(@"%@", [(NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)str, NULL, CFSTR("!$&'()*+,-./:;=?@_~"), kCFStringEncodingUTF8) autorelease]);
于 2012-08-23T18:01:06.033 に答える