メールアプリでURLクリックできるようにしたいのですが。問題は、パラメータ化されたURLが、URLの「&」のためにこれを壊してしまうことです。以下のbody変数は問題の行です。 「body」の両方のバージョンが正しくありません。メールアプリが開くと、テキストは「... link:」で停止します。アンパサンドをエンコードするには何が必要ですか?
NSString *subject = @"This is a test";
NSString *encodedSubject =
[subject stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
//NSString *body = @"This is a link: <a href='http://somewhere.com/two.woa/wa?id=000¶m=0'>click me</a>"; //original
NSString *body = @"This is a link: <a href='http://somewhere.com/two.woa/wa?id=000&param=0'>click me</a>"; //have also tried &
NSString *encodedBody =
[body stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *formattedURL = [NSString stringWithFormat: @"mailto:[email protected]?subject=%@&body=%@", encodedSubject, encodedBody];
NSURL *url = [[NSURL alloc] initWithString:formattedURL];
[[UIApplication sharedApplication] openURL:url];
RLエンコード 標準のHEXのアンパサンドは%26になります
私は-[NSString gtm_stringByEscapingForURLArgument]
を使用しています。これは、 Google Toolbox for Mac 、特に GTMNSString + URLArguments.h および GTMNSString + URLArguments)で提供されています。 m 。
[〜#〜] arc [〜#〜]サポートのためにCFURLCreateStringByAddingPercentEscapes
とCFBridgingRelease
を使用するだけです。
NSString *subject = @"This is a test";
// Encode all the reserved characters, per RFC 3986
// (<http://www.ietf.org/rfc/rfc3986.txt>)
NSString *encodedSubject =
(NSString *) CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
(CFStringRef)subject,
NULL,
(CFStringRef)@"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8));
文字の16進表現(この場合は%26)を使用できます。
stringByAddingPercentEscapesUsingEncoding
を、まったく同じように使用します。
問題は、それを十分に使用していないことです。エンコードされた本文を挿入する形式またには、エンコードされていないアンパサンドがあります。代わりに、エンコードされていない文字列をタックし、(stringByAddingPercentEscapesUsingEncoding
を使用して)一緒にエンコードします。
この属性なしで&の代わりに%26を使用した例は、配列としてPHPに到着しました!
var urlb='/tools/lister.php?type=101%26ID='+ID; // %26 instead of &
window.location.href=urlb;