2012-03-19 2 views
6

NSStringからURL文字列を取得する必要があります。私は以下を行います:NSString stringByReplacingPercentEscapesUsingEncodingは機能しません

NSString * str = [NSString stringWithString:@"[email protected]"]; 

    NSString * eStr = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

    NSLog(@"%@",eStr); 

結果は[email protected]です。しかし、私は%40gmail.comが必要です。 NSUTF8StringEncodingをNSASCIIStringEncodingに置き換えても意味がありません。

+0

あなたはstringByReplacingPercentEscapesUsingEncodingを置き換える方法を見つけましたか? – user2924482

答えて

12

あなたは間違った方法を使用しています。これは逆のことで、% のエスケープ文字をその文字に変換します。おそらく stringByAddingPercentEscapesUsingEncoding:を使用します。それとは別に

NSString *str = @"[email protected]"; 
NSString *eStr = 
    [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

@文字は、デフォルトでエスケープされていないように見えます。上記の方法のドキュメントとして が記載されている場合は、 CoreFoundationを使用して必要なものを達成する必要があります。

NSString *str = @"[email protected]"; 

CFStringRef eStr = CFURLCreateStringByAddingPercentEscapes(
    kCFAllocatorDefault, 
    (CFStringRef)str, 
    NULL, 
    (CFStringRef)@"@", 
    kCFStringEncodingUTF8 
); 

NSLog(@"%@", eStr); 

CFRelease(eStr); 

使用する機能と、それはあなたのニーズに合うようにする方法 についての詳細を知るためにdocumentationを確認してください。

+0

これは正しいです。 –

+0

私のために働きません。同じ文字列を返す:( –

+0

@Romula確かに。申し訳ありませんが、私は答えを更新しました。 – sidyll

関連する問題