3

のようなものはありますか

+(NSString *) URLencode: (NSString *) someString


+(NSString *) URLdecode: (NSString *) someString

もしそうなら、それを実装する方法は?

反対票に注意してください。これは簡単な質問ではありません。これを包括的に行うことができるものが必要です。例えば:

NSString * test = @"汉字马拉松是";
NSString * encoded = [test stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
PO(encoded);
PO(test);

次のようになります。

2012-06-04 16:04:22.709 BadgerNew[2266:17003] <0xcd890 GrabClass.m:(930)> encoded (null)
2012-06-04 16:04:22.710 BadgerNew[2266:17003] <0xcd890 GrabClass.m:(931)> test 汉字马拉松是

日本語などすべてをURLエンコードできるようにしたいと思います。

だから私は%E6%B1%89%E5%AD%97%E9%A9%AC%E6%8B%89%E6%9D%BE%E6%98%AFに沿って何かを含むようにエンコードしたい

http://mobiledevelopertips.com/networking/a-better-url-encoding-method.htmlには2つの異なる方法があります

どれも十分ではありません。

日本語/漢字を含むすべての文字列をエンコードできる必要があります。

更新:私はH2CO3の答えに従い、これを行います:NSString * test =@"汉字马拉松是"; NSString*エンコード=[テストstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; PO(エンコード); PO(テスト); PO(エンコード);

期待どおりに動作します。

4

2 に答える 2

4

stringByAddingPercentEscapesUsingEncodingとメソッドを確認することをお勧めしstringByReplacingPercentEscapesUsingEncodingます。

エンコード例(ASCIIを使用):

NSString* encodedString =
[originalString stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];

デコード例(ASCIIを使用):

NSString* originalString =
[encodedString stringByReplacingPercentEscapesUsingEncoding:NSASCIIStringEncoding];

編集:これで目的の結果が得られない場合は、に置き換えNSASCIIStringEncodingてみてくださいNSUTF8StringEncoding

また、上記のメソッドの変形を試してみることもできます。

NSString * encodedString =
  (NSString *)CFURLCreateStringByAddingPercentEscapes(
    NULL,
    (CFStringRef)originalString,
    NULL,
    (CFStringRef)@"!*'();:@&=+$,/?%#[]",
    kCFStringEncodingUTF8 );

場合によってはどちらがうまくいくでしょう

于 2012-05-31T18:05:54.567 に答える
1

中国語と日本語の文字がASCII文字列エンコーディングで機能しないのは当然です。Appleのメソッドで文字列をエスケープしようとする場合(コードの重複を避ける必要があります)、結果をUnicode文字列として保存します。次のいずれかのエンコーディングを使用します。

NSUTF8StringEncoding
NSUTF16StringEncoding
NSShiftJISStringEncoding (not Unicode, Japanese-specific)
于 2012-06-05T04:07:11.997 に答える