আমি কীভাবে ইউআরএল একটি স্ট্রিং এনকোড করব


189

NSStringস্পেস এবং &অক্ষর সহ আমার একটি ইউআরএল স্ট্রিং রয়েছে । আমি কীভাবে ইউআরএলটি পুরো স্ট্রিং ( &এম্পারস্যান্ড চরিত্র এবং স্পেস সহ ) এনকোড করব ?


1
- এই প্রশ্নের চেক করুন stackoverflow.com/questions/21403323/url-encoding-a-string/...
অক্ষয় Nalawade

উত্তর:


291

দুর্ভাগ্যক্রমে, stringByAddingPercentEscapesUsingEncodingসর্বদা 100% কাজ করে না। এটি নন-ইউআরএল অক্ষরগুলিকে এনকোড করে তবে সংরক্ষিত অক্ষরগুলি (যেমন স্ল্যাশ /এবং এম্পারস্যান্ড &) একা ফেলে দেয়। আপাতদৃষ্টিতে এটি একটি বাগ যা অ্যাপল সচেতন, কিন্তু যেহেতু তারা এখনও এটি স্থির করেনি, তাই আমি একটি স্ট্রিং url-encod করতে এই বিভাগটি ব্যবহার করছি:

@implementation NSString (NSString_Extended)

- (NSString *)urlencode {
    NSMutableString *output = [NSMutableString string];
    const unsigned char *source = (const unsigned char *)[self UTF8String];
    int sourceLen = strlen((const char *)source);
    for (int i = 0; i < sourceLen; ++i) {
        const unsigned char thisChar = source[i];
        if (thisChar == ' '){
            [output appendString:@"+"];
        } else if (thisChar == '.' || thisChar == '-' || thisChar == '_' || thisChar == '~' || 
                   (thisChar >= 'a' && thisChar <= 'z') ||
                   (thisChar >= 'A' && thisChar <= 'Z') ||
                   (thisChar >= '0' && thisChar <= '9')) {
            [output appendFormat:@"%c", thisChar];
        } else {
            [output appendFormat:@"%%%02X", thisChar];
        }
    }
    return output;
}

এর মতো ব্যবহৃত:

NSString *urlEncodedString = [@"SOME_URL_GOES_HERE" urlencode];

// Or, with an already existing string:
NSString *someUrlString = @"someURL";
NSString *encodedUrlStr = [someUrlString urlencode];

এটিও কাজ করে:

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

বিষয় সম্পর্কে কিছু ভাল পড়া:

উদ্দেশ্য-সি আইফোন শতাংশ একটি স্ট্রিং এনকোড?
উদ্দেশ্য-সি এবং সুইফট ইউআরএল এনকোডিং

http://cybersam.com/programming/proper-url-percent-encoding-in-ios
https://devforums.apple.com/message/15674#15674 http://simonwoodside.com/weblog/2009/4/ 22 / how_to_really_url_encode /


12
কেন পৃথিবীতে আপনি এই জাতীয় জটিল বিভাগটি কেবল সিএফআরএল ক্রিয়েটস্ট্রিংবি বাইএডিংপ্রেসেন্টস স্কেপস () এ নেমে যাওয়ার পরিবর্তে ব্যবহার করবেন , যেখানে আপনি সর্বদা পালাতে চান এমন চরিত্রগুলি আপনি স্পষ্টভাবে নির্দিষ্ট করতে পারেন।
লিলি ব্যালার্ড

8
@ কেভিনবালার্ড কারণ সিএফ ফাংশন একটি অন্তর্ভুক্ত মডেলটিতে কাজ করে ("এই চরিত্রগুলি থেকে বাঁচান"), এবং সাধারণত আপনি একচেটিয়া মডেলটিতে কাজ করতে চান (" এই চরিত্রগুলি বাদ দিয়ে সবকিছু থেকে পালিয়ে যান ")
ডেভ দেলং


31
@ ডেভিডলং এটি হতে পারে যেখানে আমি এটি পেয়েছি। এটি আমার সমস্ত প্রকল্পের এক বছর বা তার বেশি সময় ধরে একটি স্ট্যান্ডার্ড বিভাগ ছিল, তাই আমি কল্পনা করি আপনি সম্ভবত আসল উত্স হতে পারেন! আমি শব্দটি সম্পাদনা করেছি যাতে দেখে মনে হয় না যে আমি এটি লেখার জন্য ক্রেডিট নেওয়ার চেষ্টা করছি)।
chown

4
কেন? if (thisChar == '') {[আউটপুট অ্যাপেন্ডস্ট্রিং: @ "+"]; } এটির সাথে যদি এটি আমার 20% এর সাথে ফাঁকা স্থানগুলি এনকোড করে রাখে
ক্রিস স্টিফেনস

127

এটি সহায়ক হতে পারে

NSString *sampleUrl = @"http://www.google.com/search.jsp?params=Java Developer";
NSString* encodedUrl = [sampleUrl stringByAddingPercentEscapesUsingEncoding:
 NSUTF8StringEncoding];

আইওএস 7+ এর জন্য, প্রস্তাবিত উপায়টি হ'ল:

NSString* encodedUrl = [sampleUrl stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];

আপনি ইউআরএল উপাদানগুলির প্রয়োজনীয়তা অনুসারে অনুমোদিত অক্ষর সেটটি চয়ন করতে পারেন।


7
এটি '&', 'এর মতো প্যারামিটার ডিলিমিটারগুলিকেও সঠিকভাবে এনকোড করে না? আপনি যে কোনও এপিআইতে সামগ্রী পাস করছেন সে ক্ষেত্রে।
বেন লাচম্যান 27'14

'&' ইউআরএল কোয়েরি স্ট্রিং প্যারামিটারের জন্য বৈধ অক্ষর নয়। দয়া করে '& amp;' ব্যবহার করার চেষ্টা করুন পরিবর্তে.
নিশান্ত

1
স্ট্রিংবাইএডিংপরিসেন্টএকপেস ইউজিং এনকোডিংটি অগ্রাহ্য করা হয়েছে " -stringByAddingPercentEncodingWithAllowedCharacters:পরিবর্তে ব্যবহার করুন, যা সর্বদা প্রস্তাবিত ইউটিএফ -8 এনকোডিং ব্যবহার করে এবং যে কোনও ইউআরএল উপাদান বা উপ-সংস্থার জন্য এনকোড থাকে যেহেতু প্রতিটি ইউআরএল উপাদান বা উপ-উপাদানটি অক্ষরগুলি বৈধ কিনা তার জন্য বিভিন্ন বিধি রয়েছে" "
মিহির ওজা

89

উত্তরটি নির্বাচিত হওয়ার পরে নতুন এপিআই যুক্ত করা হয়েছে; আপনি এখন এনএসআরএল ইউটিলিটিগুলি ব্যবহার করতে পারেন। যেহেতু ইউআরএল এর বিভিন্ন অংশ বিভিন্ন বর্ণকে অনুমতি দেয় তাই প্রযোজ্য অক্ষর সেটটি ব্যবহার করুন। নিম্নলিখিত উদাহরণটি ক্যোয়ারী স্ট্রিংয়ের অন্তর্ভুক্তির জন্য এনকোডগুলি:

encodedString = [myString stringByAddingPercentEncodingWithAllowedCharacters:NSCharacterSet.URLQueryAllowedCharacterSet];

বিশেষত '&' রুপান্তর করতে, আপনাকে ইউআরএল কোয়েরি সেট থেকে এটি সরিয়ে ফেলতে হবে বা একটি আলাদা সেট ব্যবহার করতে হবে, যেমন ইউআরএল কোয়েরিতে '&' এর অনুমতি রয়েছে:

NSMutableCharacterSet *chars = NSCharacterSet.URLQueryAllowedCharacterSet.mutableCopy;
[chars removeCharactersInRange:NSMakeRange('&', 1)]; // %26
encodedString = [myString stringByAddingPercentEncodingWithAllowedCharacters:chars];

1
"এনএসআরএল ইউটিলিটিস" ব্যবহার করে আপনি কী বুঝিয়েছেন তা নির্ধারণ করতে আমার কিছুটা সময় লেগেছিল - তবে এখন আমি দেখতে পাচ্ছি যে এটি এনএসএসট্রিংয়ের বিভাগের নাম যেখানে অ্যাপল আইওএস 7 এবং ওএস এক্স 10.9 এ এই নতুন পদ্ধতিটি সংজ্ঞায়িত করেছে।
রিচার্ড ভেনেবল

1
এখানে এর মতো আরও বিস্তৃত উত্তর রয়েছে: stackoverflow.com/a/20271177/456366
রিচার্ড ভেনেবল

হা. প্রকাশিত নতুন এপিআইয়ের তালিকায় এটি এনএসআরএল ইউটিলিটি হিসাবেও তালিকাভুক্ত ছিল।
পিটার ডিউইউজ

'&' অবশ্যই কোয়েরি স্ট্রিংয়ে অনুমোদিত, তাই আমি রিচার্ডের লিঙ্কটি ব্যবহার করে আমার উত্তর সম্পাদনা করব।
পিটার ডিউইউজ

3
NSMakeRange('&', 1)সুইফটে কাজ করে না, কারণ সুইফট হ্যাক ছাড়াই চরকে ইন্টার রূপান্তর করতে দেয় না। এই সমাধানটি সুইফ্ট removeCharactersInString("&").removeCharactersInRange(...)
কোডটিতে

16

সুইফট 2.0 উদাহরণ (আইওএস 9 তুলনামূলক)

extension String {

  func stringByURLEncoding() -> String? {

    let characters = NSCharacterSet.URLQueryAllowedCharacterSet().mutableCopy() as! NSMutableCharacterSet

    characters.removeCharactersInString("&")

    guard let encodedString = self.stringByAddingPercentEncodingWithAllowedCharacters(characters) else {
      return nil
    }

    return encodedString

  }

}

2
অ্যালিকা থমাসকে আপনি এখানে পৌঁছানোর জন্য কয়েকটি ছোঁয়াছুঁড়ি করতে হবে বলে মনে হচ্ছে, কেন এটি একটি এক্সটেনশনে লুকিয়ে রাখা ভাল
অলিভার অ্যাটকিনসন

@ অলিভার অ্যাটকিনসন - আমার জন্য ইন্টার (স্ট্রিং (চরিত্র ("&"))) যেমনটি করা উচিত তেমন শূন্য করে returns পরিবর্তে অক্ষরসমূহ remআমোভচ্যাকার্টারসনস্ট্রিং ("&")।
পরিবেষ্টনীয়

14

আইওএস 7 আপডেট

NSString *encode = [string stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];

NSString *decode = [encode stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

এটি সঠিক নয়। আপনি ইউআরএল এর বিভিন্ন অংশ পৃথকভাবে পালাতে চাইবেন। stackoverflow.com/questions/3423545/…
স্টিভ মোজার

অনুমতিপ্রাপ্ত অক্ষরগুলির জন্য এটি আসলে আপনার সার্ভারের উপর নির্ভর করে, এখানে সার্ভারে আমার উদাহরণে এটি কেবলমাত্র বর্ণানুক্রমিক অক্ষরের অনুমতিযুক্ত ব্যবহার করেছিলাম, আপনার প্রয়োজনীয়তা পূরণের জন্য আপনি এটি নির্দিষ্ট অক্ষরে পরিবর্তন করতে পারেন।
আন্ডারডগ

1
প্রশ্নটি '&' চরিত্রটি এনকোডিং সম্পর্কে জিজ্ঞাসা করে।
স্টিভ মোসার

8

আমি CFURLCreateStringByAddingPercentEscapesস্বীকৃত উত্তর দ্বারা প্রদত্ত কলটি ব্যবহার করার সিদ্ধান্ত নিয়েছি , তবে এক্সকোডের (এবং আইওএস) সর্বশেষতম সংস্করণে এটির একটি ত্রুটি ঘটেছে, সুতরাং এর পরিবর্তে নিম্নলিখিতটি ব্যবহার করুন:

NSString *apiKeyRaw = @"79b|7Qd.jW=])(fv|M&W0O|3CENnrbNh4}2E|-)J*BCjCMrWy%dSfGs#A6N38Fo~";

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

এটি স্থান এনকোডিং নয়। @ "স্ট্রিং স্ট্রিং" এবং @ "স্ট্রিং ও স্ট্রিং" উদাহরণটি সঠিকভাবে এনকোড করা আছে। দয়া করে আমাকে আপনার ইনপুটটিও জানতে দিন।
যোগেশ লোলুসারে

2
আমার পক্ষে এটি সমাধানের বেশিরভাগ সময় অস্বীকারের সময় ছিল যেখানে আমি বিশ্বাস করতে অস্বীকার করি যে ফ্রেমওয়ার্কটিতে 'ইউরেনকোড' জাতীয় কিছু রয়েছে যা এইরকম
গোলমাল

6

stringByAddingPercentEncodingWithAllowedCharactersসঙ্গে পদ্ধতি ব্যবহার করার চেষ্টা করুন[NSCharacterSet URLUserAllowedCharacterSet] সমস্ত কেস কভার করবে

উদ্দেশ্য গ

NSString *value = @"Test / Test";
value = [value stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLUserAllowedCharacterSet]];

দ্রুতগতি

var value = "Test / Test"
value.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLUserAllowedCharacterSet())

আউটপুট

Test%20%2F%20Test


6

এই বিষয়ের জন্য সমস্ত উত্তর পড়ার পরে এবং ( ভুল ) একটি গৃহীত হয়েছে, আমি আমার অবদান যুক্ত করতে চাই।

যদি লক্ষ্যটি iOS7 + হয়, এবং 2017 সালে XCode আইওএস 8 এর অধীনে সামঞ্জস্যতা সরবরাহ করা সত্যিই কঠিন করা উচিত, সবচেয়ে ভাল উপায়, থ্রেড নিরাপদ, দ্রুত, এএমডি এটি করার জন্য ইউটিএফ -8 সম্পূর্ণ সমর্থন করবে:

(উদ্দেশ্য সি কোড)

@implementation NSString (NSString_urlencoding)

- (NSString *)urlencode {
    static NSMutableCharacterSet *chars = nil;
    static dispatch_once_t pred;

    if (chars)
        return [self stringByAddingPercentEncodingWithAllowedCharacters:chars];

    // to be thread safe
    dispatch_once(&pred, ^{
        chars = NSCharacterSet.URLQueryAllowedCharacterSet.mutableCopy;
        [chars removeCharactersInString:@"!*'();:@&=+$,/?%#[]"];
    });
    return [self stringByAddingPercentEncodingWithAllowedCharacters:chars];
}
@end

এটি এনএসএসস্ট্রিং প্রসারিত করবে, আরএফসি নিষিদ্ধ অক্ষর বাদ দেবে, ইউটিএফ -8 অক্ষরকে সমর্থন করবে এবং আপনাকে এই জাতীয় জিনিস ব্যবহার করতে দিন:

NSString *myusername = "I'm[evil]&want(to)break!!!$->àéìòù";
NSLog(@"Source: %@ -> Dest: %@", myusername, [myusername urlencode]);

এটি আপনার ডিবাগ কনসোলটিতে মুদ্রণ করবে:

উত্স: আমি [অশুভ] এবং ব্রেক করতে চাই ())>> -> àéìòù -> লক্ষ্য: আমি% 27 মি% 5 বিভিল% 5 ডি% 26 ভাই% 28to% 29 ভঙ্গ% 21% 21% 21% 24-% 3E% সি 3 % A0% C3 এ% A9% C3 এ% এসি% C3 এ% B2 তে% C3 এ% B9

... মাল্টিথ্রিড পরিবেশে একাধিক সূচনা এড়ানোর জন্য ডিসপ্যাচ_অনসের ব্যবহারটিও নোট করুন note


5

সুইফট ৫.x এ এখানে উত্পাদন-প্রস্তুত নমনীয় পদ্ধতি রয়েছে :

public extension CharacterSet {

    static let urlQueryParameterAllowed = CharacterSet.urlQueryAllowed.subtracting(CharacterSet(charactersIn: "&?"))

    static let urlQueryDenied           = CharacterSet.urlQueryAllowed.inverted()
    static let urlQueryKeyValueDenied   = CharacterSet.urlQueryParameterAllowed.inverted()
    static let urlPathDenied            = CharacterSet.urlPathAllowed.inverted()
    static let urlFragmentDenied        = CharacterSet.urlFragmentAllowed.inverted()
    static let urlHostDenied            = CharacterSet.urlHostAllowed.inverted()

    static let urlDenied                = CharacterSet.urlQueryDenied
        .union(.urlQueryKeyValueDenied)
        .union(.urlPathDenied)
        .union(.urlFragmentDenied)
        .union(.urlHostDenied)


    func inverted() -> CharacterSet {
        var copy = self
        copy.invert()
        return copy
    }
}



public extension String {
    func urlEncoded(denying deniedCharacters: CharacterSet = .urlDenied) -> String? {
        return addingPercentEncoding(withAllowedCharacters: deniedCharacters.inverted())
    }
}

ব্যবহারের উদাহরণ:

print("Hello, World!".urlEncoded()!)
print("You&Me?".urlEncoded()!)
print("#Blessed 100%".urlEncoded()!)
print("Pride and Prejudice".urlEncoded(denying: .uppercaseLetters)!)

আউটপুট:

Hello,%20World!
You%26Me%3F
%23Blessed%20100%25
%50ride and %50rejudice

আপনার ডাউনভোটগুলির কারণ ব্যাখ্যা করে একটি মন্তব্য অন্তর্ভুক্ত করুন যাতে আমি কীভাবে ভবিষ্যতে আরও ভাল উত্তর লিখতে জানি 🙂
বেন লেগজিও

4

এইচটিটিপি জিইটি প্যারামিটারগুলি এনকোড করতে এনএসআরএল উপাদানগুলি ব্যবহার করুন:

    var urlComponents = NSURLComponents(string: "https://www.google.de/maps/")!
    urlComponents.queryItems = [
        NSURLQueryItem(name: "q", value: String(51.500833)+","+String(-0.141944)),
        NSURLQueryItem(name: "z", value: String(6))
    ]
    urlComponents.URL     // returns https://www.google.de/maps/?q=51.500833,-0.141944&z=6

http://www.ralfebert.de/snippets/ios/encoding-nsurl-get-parameters/


1
এটি অ্যাম্পারস্যান্ডস, স্ল্যাশ বা সেমিকোলনগুলি এনকোড করে না।
Fábio Oliveira

4

এই কোডটি আমাকে বিশেষ অক্ষরগুলি এনকোড করার জন্য সহায়তা করেছিল

NSString* encPassword = [password stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet alphanumericCharacterSet]];

3

SWIFT কোড উপর ভিত্তি করে chown 'এই থ্রেড objc উত্তর s।

extension String {
    func urlEncode() -> String {
        return CFURLCreateStringByAddingPercentEscapes(
            nil,
            self,
            nil,
            "!*'();:@&=+$,/?%#[]",
            CFStringBuiltInEncodings.UTF8.rawValue
        )
    }
}

4
এই ফাংশনটি আইওএস 9 :(
অলিভার অ্যাটকিনসন

3

ইন সুইফট 3 , নীচের চেষ্টা করুন:

let stringURL = "YOUR URL TO BE ENCODE";
let encodedURLString = stringURL.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)
print(encodedURLString)

যেহেতু, stringByAddingPercentEscapesUsingEncodingইউআরএল অক্ষরগুলি এনকোড করে তবে সংরক্ষিত অক্ষরগুলি (যেমন !*'();:@&=+$,/?%#[]) ছেড়ে যায় , আপনি নিম্নলিখিত কোডের মতো ইউআরএল এনকোড করতে পারেন:

let stringURL = "YOUR URL TO BE ENCODE";
let characterSetTobeAllowed = (CharacterSet(charactersIn: "!*'();:@&=+$,/?%#[] ").inverted)
if let encodedURLString = stringURL.addingPercentEncoding(withAllowedCharacters: characterSetTobeAllowed) {
    print(encodedURLString)
}

2

দ্রুত 3:

// exclude alpha and numeric == "full" encoding
stringUrl = stringUrl.addingPercentEncoding(withAllowedCharacters: .alphanumerics)!;

// exclude hostname and symbols &,/ and etc
stringUrl = stringUrl.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)!;

2

10.11 রিলিজ নোটে অ্যাপলের পরামর্শটি হ'ল:

আপনার যদি একটি সম্পূর্ণ ইউআরএল স্ট্রিংটি শতাংশ-এনকোড করার দরকার হয় তবে আপনি এই কোডটি কোনও ইউআরএল হওয়ার উদ্দেশ্যে এনএসটিস্ট্রিংকে এনকোড করতে ব্যবহার করতে পারেন (urlStringToEncode এ):

NSString *percentEncodedURLString =
  [[NSURL URLWithDataRepresentation:[urlStringToEncode dataUsingEncoding:NSUTF8StringEncoding] relativeToURL:nil] relativeString];

কাজ করার মতো মনে হচ্ছে না, যেমন চরগুলি এখনও একা রয়ে গেছে
kjyv

1

আমার ক্ষেত্রে যেখানে সর্বশেষ উপাদানটি আরবি অক্ষর ছিল আমি নিম্নলিখিতগুলি এখানে করেছি Swift 2.2:

extension String {

 func encodeUTF8() -> String? {

    //If I can create an NSURL out of the string nothing is wrong with it
    if let _ = NSURL(string: self) {

        return self
    }

    //Get the last component from the string this will return subSequence
    let optionalLastComponent = self.characters.split { $0 == "/" }.last


    if let lastComponent = optionalLastComponent {

        //Get the string from the sub sequence by mapping the characters to [String] then reduce the array to String
        let lastComponentAsString = lastComponent.map { String($0) }.reduce("", combine: +)


        //Get the range of the last component
        if let rangeOfLastComponent = self.rangeOfString(lastComponentAsString) {
            //Get the string without its last component
            let stringWithoutLastComponent = self.substringToIndex(rangeOfLastComponent.startIndex)


            //Encode the last component
            if let lastComponentEncoded = lastComponentAsString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.alphanumericCharacterSet()) {


            //Finally append the original string (without its last component) to the encoded part (encoded last component)
            let encodedString = stringWithoutLastComponent + lastComponentEncoded

                //Return the string (original string/encoded string)
                return encodedString
            }
        }
    }

    return nil;
}
}

ব্যবহার:

let stringURL = "http://xxx.dev.com/endpoint/nonLatinCharacters"

if let encodedStringURL = stringURL.encodeUTF8() {

    if let url = NSURL(string: encodedStringURL) {

      ...
    }

} 

1
-(NSString *)encodeUrlString:(NSString *)string {
  return CFBridgingRelease(
                    CFURLCreateStringByAddingPercentEscapes(
                        kCFAllocatorDefault,
                        (__bridge CFStringRef)string,
                        NULL,
                        CFSTR("!*'();:@&=+$,/?%#[]"),
                        kCFStringEncodingUTF8)
                    );
}

নিম্নলিখিত ব্লগ অনুযায়ী


তবে এটি আইওএস 9 এ অবমূল্যায়িত হয়েছে এর জন্য আপডেট হওয়া কোডটি কী?
সুজিত নাচান

1

এতগুলি উত্তর কিন্তু আমার পক্ষে কার্যকর হয়নি, তাই আমি নিম্নলিখিতগুলি চেষ্টা করেছিলাম:

fun simpleServiceCall(for serviceUrl: String, appendToUrl: String) { 
    let urlString: String = serviceUrl + appendToUrl.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed)!     

    let finalUrl = URL(string: urlString)!

    //continue to execute your service call... 
}

আশা করি এটি কাউকে সাহায্য করবে। ধন্যবাদ


0

স্বতন্ত্র www ফর্ম-এনকোডেড ক্যোয়ারী প্যারামিটারগুলির জন্য, আমি এনএসএসস্ট্রিং এ একটি বিভাগ তৈরি করেছি:

- (NSString*)WWWFormEncoded{
     NSMutableCharacterSet *chars = NSCharacterSet.alphanumericCharacterSet.mutableCopy;
     [chars addCharactersInString:@" "];
     NSString* encodedString = [self stringByAddingPercentEncodingWithAllowedCharacters:chars];
     encodedString = [encodedString stringByReplacingOccurrencesOfString:@" " withString:@"+"];
     return encodedString;
}

0

// এটি পরীক্ষা ছাড়াই

NSMutableCharacterSet* set = [[NSCharacterSet alphanumericCharacterSet] mutableCopy];
[set addCharactersInString:@"-_.~"];
NSString *encode = [test stringByAddingPercentEncodingWithAllowedCharacters:set];

0

পোষ্ট প্যারামিটার হিসাবে জটিল স্ট্রিংগুলি পাস করার ক্ষেত্রে আমি একই ধরণের সমস্যার মুখোমুখি হয়েছি। আমার স্ট্রিংগুলিতে এশীয় অক্ষর, স্পেস, কোট এবং সমস্ত ধরণের বিশেষ অক্ষর থাকতে পারে। শেষ পর্যন্ত আমি যে সমাধানটি পেয়েছি তা হ'ল আমার স্ট্রিংটিকে ইউনিকোডের মিলের সিরিজে রূপান্তর করা, যেমন "Hu0040Hu0020Hu03f5 ...." ব্যবহার করে [এনএসএস স্ট্রিং উইথফর্ম্যাট: @ "হু% 04x", [স্ট্রিং চরিত্রআটিআইন্ডেক্স: i]] প্রতিটি থেকে ইউনিকোড পাওয়ার জন্য মূল স্ট্রিংয়ের অক্ষর। জাভাতেও একই কাজ করা যেতে পারে।

এই স্ট্রিংটি কোনও পোষ্ট প্যারামিটার হিসাবে নিরাপদে পাস করা যেতে পারে।

সার্ভার সাইডে (পিএইচপি), আমি সমস্ত "এইচ" কে "\" এ পরিবর্তন করি এবং আমি ফলাফলটি স্ট্রিংটি json_decode এ পাস করি। চূড়ান্ত পদক্ষেপটি মাইএসকিউএলে স্ট্রিংটি সঞ্চয় করার আগে একক উদ্ধৃতি থেকে বাঁচা।

এইভাবে আমি আমার সার্ভারে যে কোনও ইউটিএফ 8 স্ট্রিং সঞ্চয় করতে পারি।


0

এই আমার জন্য কাজ করছে।

func stringByAddingPercentEncodingForFormData(plusForSpace: Bool=false) -> String? {
    let unreserved = "*-._"
    let allowed = NSMutableCharacterSet.alphanumericCharacterSet()
    allowed.addCharactersInString(unreserved)

    if plusForSpace {
        allowed.addCharactersInString(" ")
    }

    var encoded = stringByAddingPercentEncodingWithAllowedCharacters(allowed)
    if plusForSpace {
        encoded = encoded?.stringByReplacingOccurrencesOfString(" ",
                                                                withString: "+")
    }
    return encoded
}

আমি এই লিঙ্কটি থেকে উপরের ফাংশনটি পেয়েছি: http://useyourloaf.com/blog/how-to-percent-encode-a-url-string/

আপনি দ্রুত এক্সটেনশন সহ এই ফাংশনটিও ব্যবহার করতে পারেন। কোনও সমস্যা থাকলে দয়া করে আমাকে জানান let

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.