URLにMr.Y &という文字列を渡すにはどうすればいいですか?Iphone SDk:URL文字列のアンパサンドに関する問題
私はこれを試しましたが、この1つはすべての文字ですが、アンパサンドです。
[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]
ありがとうございました。
URLにMr.Y &という文字列を渡すにはどうすればいいですか?Iphone SDk:URL文字列のアンパサンドに関する問題
私はこれを試しましたが、この1つはすべての文字ですが、アンパサンドです。
[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]
ありがとうございました。
URLで、アンパサンドは、クエリー文字列変数のインクルードを示す保護されたキーワードです。あなたはそれを値そのものの一部として入れることはできません。それを別のものに変更する必要があります。 URLエスケープとして%26 ASP.Net URLEncode Ampersand for use in Query String
使用:ここで
はStackOverflowの上で尋ねた同じ質問へのリンクです。
その他のエスケープ:
$ %24
& %26
+ %2B
, %2C
/%2F
: %3A
; %3B
= %3D
? %3F
@ %40
は、だから私は右 [:「&」withString @「%26」@ statusTextField.text stringByReplacingOccurrencesOfString]です。 –
-stringByAddingPercentEscapesUsingEncoding:
は、完全なエスケープのエンコードを実行しません。 -replaceOccurrencesOfString:withString:
https://devforums.apple.com/message/15674#15674で最初に示唆された完全なリスト(Gamecatのリストをミラーリング)です。 Nickが指摘しているように、これは高価なので、実際のエスケープ要件を考慮せずに完全なリストを含めるだけではありません。
NSMutableString *escaped = [actionString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[escaped replaceOccurrencesOfString:@"$" withString:@"%24" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"&" withString:@"%26" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"+" withString:@"%2B" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"," withString:@"%2C" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"/" withString:@"%2F" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@":" withString:@"%3A" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@";" withString:@"%3B" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"=" withString:@"%3D" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"?" withString:@"%3F" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"@" withString:@"%40" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@" " withString:@"%20" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"\t" withString:@"%09" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"#" withString:@"%23" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"<" withString:@"%3C" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@">" withString:@"%3E" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"\"" withString:@"%22" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"\n" withString:@"%0A" options:NSCaseInsensitiveSearch range:wholeString];
このコードは、あなたのURLのハッシュを作成します。
私は適切なコードはもっと似ていると信じています NSMutableString *エスケープ= [NSMutableString stringWithString:[actionString ...]]; とNSMakeRange(0、[エスケープされた長さ])]を使用します。 – kolinko
私の日を作る..ありがとうございます –
これは非常にコストがかかり、CFURLCreateStringByAddingPercentEscapes()が優れています。 –
あるいは短い:
@implementation NSString (Escaping)
- (NSString*)stringWithPercentEscape {
return [(NSString *) CFURLCreateStringByAddingPercentEscapes(
NULL,
(CFStringRef)[[self mutableCopy] autorelease],
NULL,
CFSTR("=,!$&'()*+;@?\n\"<>#\t :/"),
kCFStringEncodingUTF8) autorelease];
}
@end
そして、ここでは、ARCは、インライン関数ヘルパーに準拠して、再びです:
#if __has_feature(objc_arc)
static inline NSString *hxURLEscape(NSString *v) {
static CFStringRef _hxURLEscapeChars = CFSTR("=,!$&'()*+;@?\r\n\"<>#\t :/");
return ((__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(
NULL,
(__bridge CFStringRef)[v mutableCopy],
NULL,
_hxURLEscapeChars,
kCFStringEncodingUTF8));
}
#endif
短くて怖い:) – bentford
下記のRogerの答えをご覧ください。このソリューションは一般的な回答ですが、iOSバージョン2.2以降の完全なURLエンコード実装ではありません。これ以降のiOSリリースで修正されていることに関する追加情報がある場合は、ここでコメントしてください。 – memmons
あなたはなぜそれをコピーできますか? – user102008
stringByAddingPercentEscapesUsingEncoding
も+
で正しく動作しません。これは、まさに(リンク時)正解です
[[[urlString stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding] stringByReplacingOccurrencesOfString:@"&" withString:@"%26"] stringByReplacingOccurrencesOfString:@"+" withString:@"%2b"];
:ここ
は簡単なソリューションです。 –
...それは間違ったフレームワークのためです。 iPhoneに.NETはありません。 と私のサーバー側で私は&とストアとデシベルで26%を置き換える、私は次の操作を行う場合 –