स्विफ्ट - URL को एनकोड करें


295

अगर मैं इस तरह एक स्ट्रिंग सांकेतिक शब्दों में बदलना:

var escapedString = originalString.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)

यह स्लैश से बच नहीं है /

मैंने इस उद्देश्य C कोड को खोजा और पाया है:

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

क्या URL को एन्कोड करने का एक आसान तरीका है और यदि नहीं, तो मैं इसे स्विफ्ट में कैसे लिखूं?

जवाबों:


613

स्विफ्ट 3

स्विफ्ट 3 में है addingPercentEncoding

let originalString = "test/test"
let escapedString = originalString.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)
print(escapedString!)

आउटपुट:

परीक्षण% 2Ftest

स्विफ्ट 1

IOS 7 और इसके बाद के संस्करण में है stringByAddingPercentEncodingWithAllowedCharacters

var originalString = "test/test"
var escapedString = originalString.stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet())
println("escapedString: \(escapedString)")

आउटपुट:

परीक्षण% 2Ftest

निम्नलिखित उपयोगी (उल्टे) वर्ण सेट हैं:

URLFragmentAllowedCharacterSet  "#%<>[\]^`{|}
URLHostAllowedCharacterSet      "#%/<>?@\^`{|}
URLPasswordAllowedCharacterSet  "#%/:<>?@[\]^`{|}
URLPathAllowedCharacterSet      "#%;<>?[\]^`{|}
URLQueryAllowedCharacterSet     "#%<>[\]^`{|}
URLUserAllowedCharacterSet      "#%/:<>?@[\]^`

यदि आप चाहते हैं कि पात्रों का एक अलग सेट सेट होने से बच जाए:
उदाहरण के लिए जोड़ा गया "=" वर्ण:

var originalString = "test/test=42"
var customAllowedSet =  NSCharacterSet(charactersInString:"=\"#%/<>?@\\^`{|}").invertedSet
var escapedString = originalString.stringByAddingPercentEncodingWithAllowedCharacters(customAllowedSet)
println("escapedString: \(escapedString)")

आउटपुट:

परीक्षण% 2Ftest% 3D42

सेट में एससीआई पात्रों को सत्यापित करने के लिए उदाहरण:

func printCharactersInSet(set: NSCharacterSet) {
    var characters = ""
    let iSet = set.invertedSet
    for i: UInt32 in 32..<127 {
        let c = Character(UnicodeScalar(i))
        if iSet.longCharacterIsMember(i) {
            characters = characters + String(c)
        }
    }
    print("characters not in set: \'\(characters)\'")
}

6
क्या कोई और पूरी तरह से इस बात पर अडिग नहीं है कि यह कोड कब तक ऐसा करना है? मेरा मतलब है कि विधि नाम पहले से ही लंबे समय तक नरक है, यहां तक ​​कि अनुमत चरित्र सेट का चयन किए बिना।
thatidiotguy

38
नहीं, मैं संक्षिप्त नामकरण की तुलना में समझदारी के पक्ष में हूं। स्वत: पूर्ण दर्द को बाहर निकालता है। stringByAddingPercentEncodingWithAllowedCharacters()यह क्या करता है के बारे में थोड़ा संदेह छोड़ देता है। दिलचस्प टिप्पणी यह ​​मानते हुए कि यह शब्द कब तक है: "flabbergasted"।
ज़ाफ़

1
stringByAddingPercentEncodingWithAllowedCharacters (.URLHostAllowedCharacterSet ()) सभी वर्णों को ठीक से एनकोड नहीं करता है, ब्रायन चेन का उत्तर एक बेहतर समाधान है।
जूलियो गार्सिया

2
@ ज़ैफ़ मैंने &चरित्र सेट में जोड़ा URLQueryAllowedCharacterSetऔर मुझे प्रत्येक चरित्र एन्कोडेड मिला। IOS 9 के साथ जांचा गया, छोटी गाड़ी जैसी दिखती है, मैं @ bryanchen के जवाब के साथ गया, यह अच्छी तरह से काम करता है !!
आकाश काव

3
नीचे दिए गए उत्तर का उपयोग करता है URLComponentsऔर URLQueryItemबहुत क्लीनर IMO है।
एरॉन ब्रेजर

65

अपने क्वेरी स्ट्रिंग को मैन्युअल रूप से प्रतिशत करने के लिए URLCompords का उपयोग कर सकते हैं:

let scheme = "https"
let host = "www.google.com"
let path = "/search"
let queryItem = URLQueryItem(name: "q", value: "Formula One")


var urlComponents = URLComponents()
urlComponents.scheme = scheme
urlComponents.host = host
urlComponents.path = path
urlComponents.queryItems = [queryItem]

if let url = urlComponents.url {
    print(url)   // "https://www.google.com/search?q=Formula%20One"
}

extension URLComponents {
    init(scheme: String = "https",
         host: String = "www.google.com",
         path: String = "/search",
         queryItems: [URLQueryItem]) {
        self.init()
        self.scheme = scheme
        self.host = host
        self.path = path
        self.queryItems = queryItems
    }
}

let query = "Formula One"
if let url = URLComponents(queryItems: [URLQueryItem(name: "q", value: query)]).url {
    print(url)  // https://www.google.com/search?q=Formula%20One
}

7
इस उत्तर पर अधिक ध्यान देने की आवश्यकता है, क्योंकि अन्य सभी के साथ मुद्दे हैं (हालांकि उचित होने के लिए वे उस समय सर्वोत्तम अभ्यास हो सकते हैं)।
आसा

4
अफसोस की बात है, URLQueryItemहमेशा सही ढंग से सांकेतिक शब्दों में बदलना नहीं करता है। उदाहरण के लिए, Formula+Oneइनकोड किया जाएगा Formula+One, जिसे डिकोड किया जाएगा Formula One। इसलिए प्लस साइन से सतर्क रहें।
सुल्तान

37

स्विफ्ट 3:

let originalString = "http://www.ihtc.cc?name=htc&title=iOS开发工程师"

1. एन्कोडिंग

let escapedString = originalString.addingPercentEncoding(withAllowedCharacters:NSCharacterSet.urlQueryAllowed)

परिणाम:

"http://www.ihtc.cc?name=htc&title=iOS%E5%BC%80%E5%8F%91%E5%B7%A5%E7%A8%8B%E5%B8%88" 

2. एन्कोडिंग:

let escapedString = originalString.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)

परिणाम:

"http:%2F%2Fwww.ihtc.cc%3Fname=htc&title=iOS%E5%BC%80%E5%8F%91%E5%B7%A5%E7%A8%8B%E5%B8%88"

मैंने पहले समाधान का उपयोग किया लेकिन मैं अपने पाठ को वापस करना चाहता हूं, जैसे कि iOS I I।
अक्षय फुलारे

2
urlHostAllowedएन्कोडिंग क्वेरी पैरामीटर्स को गलत के लिए उपयोग करना क्योंकि यह एन्कोड नहीं होगा ?, =और +। क्वेरी पैरामीटर एन्कोडिंग करते समय, आपको पैरामीटर नाम और मान को अलग-अलग और सही तरीके से एन्कोड करना होगा। यह एक सामान्य मामले में काम नहीं करेगा।
सुल्तान

@Sulthan .. आप समाधान / के लिए विकल्प किसी भी मिलाurlHostAllowed
भरत

@ भातर, हाँ, आपको अपने द्वारा निर्धारित चरित्र का निर्माण करना होगा, जैसे कि stackoverflow.com/a/39767927/669586 या बस उपयोग करें URLComponents
सुल्तान

URLCompords +char को भी एनकोड नहीं करते हैं। तो एकमात्र विकल्प इसे मैन्युअल रूप से करना है:CharacterSet.urlQueryAllowed.subtracting(CharacterSet(charactersIn: "+"))
सॉफ्टडिजर

36

स्विफ्ट 3:

let allowedCharacterSet = (CharacterSet(charactersIn: "!*'();:@&=+$,/?%#[] ").inverted)

if let escapedString = originalString.addingPercentEncoding(withAllowedCharacters: allowedCharacterSet) {
//do something with escaped string
}

2
आपको वर्णों के स्ट्रिंग में `` (स्थान) को शामिल करने की आवश्यकता है
एजेपी

1
आपको ^
मणि

26

स्विफ्ट 4

URL में एक पैरामीटर को एनकोड करने के लिए मुझे .alphanumericsवर्ण का उपयोग करना सबसे आसान विकल्प लगता है:

let encoded = parameter.addingPercentEncoding(withAllowedCharacters: .alphanumerics)
let url = "http://www.example.com/?name=\(encoded!)"

URL एनकोडिंग (जैसे URLQueryAllowedCharacterSetया URLHostAllowedCharacterSet) के लिए किसी भी मानक वर्ण समूह का उपयोग करने से काम नहीं चलेगा, क्योंकि वे वर्ण =या &अक्षर को बाहर नहीं करते हैं ।

नोट का उपयोग करके .alphanumericsयह कुछ अक्षर हैं जो एन्कोड करने की जरूरत नहीं है सांकेतिक शब्दों में बदलना होगा (जैसे -, ., _या ~- देखना । 2.3 अनारक्षित वर्ण RFC 3986 में)। मैं .alphanumericsएक कस्टम वर्ण सेट के निर्माण की तुलना में सरल का उपयोग कर पाता हूं और कुछ अतिरिक्त वर्णों को एन्कोड किया जाना बुरा नहीं मानता। यदि वह आपको परेशान करता है, तो एक कस्टम वर्ण सेट करें , जैसा कि उदाहरण के लिए, URL स्ट्रिंग को कैसे एन्कोड किया जाए, में वर्णित है :

var allowed = CharacterSet.alphanumerics
allowed.insert(charactersIn: "-._~") // as per RFC 3986
let encoded = parameter.addingPercentEncoding(withAllowedCharacters: allowed)
let url = "http://www.example.com/?name=\(encoded!)"

चेतावनी:encoded पैरामीटर बल unwrapped है। अमान्य यूनिकोड स्ट्रिंग के लिए यह दुर्घटनाग्रस्त हो सकता है। देखें कि String.addingPercentEncoding () वैकल्पिक का वापसी मान क्यों है? । बल encoded!प्रयोग के बजाय आप उपयोग encoded ?? ""या उपयोग कर सकते हैं if let encoded = ...


1
.फानूमेरिक्स ने किया, धन्यवाद! अन्य सभी वर्ण सेट पैरामीटर के रूप में स्ट्रिंग्स का उपयोग करते समय समस्याएं पैदा करने वाले समस्याओं से बच नहीं पाए।
डायोन

14

सब कुछ वैसा ही है

var str = CFURLCreateStringByAddingPercentEscapes(
    nil,
    "test/test",
    nil,
    "!*'();:@&=+$,/?%#[]",
    CFStringBuiltInEncodings.UTF8.rawValue
)

// test%2Ftest

आपने .bridgeToOvjectiveC()दूसरा तर्क नहीं दिया और "अभिव्यक्ति के प्रकार को परिवर्तित नहीं कर सका '' CFString!" टाइप करने के लिए 'CFString!'
क्रेरी जूल

@ क्रेरी को इसकी आवश्यकता क्यों है? खेल का मैदान और आरईपीएल दोनों मेरे कोड से खुश हैं।
ब्रायन चेन

मेरा नहीं कर रहे हैं: / (बीटा 2)
क्रेरी

1
यह एक बेहतर उत्तर है क्योंकि यह एन्कोड करता है और सही ढंग से।
सैम

13

स्विफ्ट 4:

यह आपके सर्वर द्वारा अनुसरण किए जाने वाले एन्कोडिंग नियमों द्वारा निर्भर करता है।

Apple इस वर्ग विधि की पेशकश करता है, लेकिन यह आरसीएफ प्रोटोकॉल के विच प्रकार की रिपोर्ट नहीं करता है।

var escapedString = originalString.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)!

इस उपयोगी उपकरण के बाद आपको अपने मापदंडों के लिए इन वर्णों की एन्कोडिंग की गारंटी देनी चाहिए:

  • $ (डॉलर साइन) 24% हो जाता है
  • और (एम्परसेंड) 26% हो जाता है
  • + (प्लस)% 2B बन जाता है
  • , (कोमा)% 2C बन जाता है
  • : (कोलन)% 3A बन जाता है
  • ; (सेमी-कोलोन)% 3B हो जाता है
  • = (बराबर)% 3 डी हो जाता है
  • ? (प्रश्न चिह्न)% 3F हो जाता है
  • @ (वाणिज्यिक A / At)% 40 हो जाता है

दूसरे शब्दों में, URL एन्कोडिंग के बारे में बोलते हुए, आपको RFC 1738 प्रोटोकॉल का पालन ​​करना चाहिए ।

और स्विफ्ट उदाहरण के लिए + चार के एन्कोडिंग को कवर नहीं करता है, लेकिन यह इन तीन @ के साथ अच्छी तरह से काम करता है :? वर्ण।

इसलिए, अपने प्रत्येक पैरामीटर को सही ढंग से एन्कोडिंग करने के लिए, .urlHostAllowedविकल्प पर्याप्त नहीं है, आपको उदाहरण के लिए विशेष वर्ण भी जोड़ना चाहिए:

encodedParameter = parameter.replacingOccurrences(of: "+", with: "%2B")

आशा है कि यह किसी ऐसे व्यक्ति की मदद करता है जो इन informations को खोजने के लिए पागल हो जाता है।


आपका कार्यान्वयन पूरी तरह से गलत है। एक पैरामीटर "věž" कैसे एन्कोड किया जाएगा?
मारीआन Marierný

13

स्विफ्ट 4 (परीक्षण नहीं किया गया - यदि यह काम करता है या नहीं तो कृपया टिप्पणी करें। सुझाव के लिए धन्यवाद @sumizome)

var allowedQueryParamAndKey = NSCharacterSet.urlQueryAllowed
allowedQueryParamAndKey.remove(charactersIn: ";/?:@&=+$, ")
paramOrKey.addingPercentEncoding(withAllowedCharacters: allowedQueryParamAndKey)

स्विफ्ट 3

let allowedQueryParamAndKey =  NSCharacterSet.urlQueryAllowed.remove(charactersIn: ";/?:@&=+$, ")
paramOrKey.addingPercentEncoding(withAllowedCharacters: allowedQueryParamAndKey)

2.2 स्विफ्ट (Zaph से उधार लेना और url क्वेरी कुंजी और पैरामीटर मानों के लिए सही करना)

var allowedQueryParamAndKey =  NSCharacterSet(charactersInString: ";/?:@&=+$, ").invertedSet
paramOrKey.stringByAddingPercentEncodingWithAllowedCharacters(allowedQueryParamAndKey)

उदाहरण:

let paramOrKey = "https://some.website.com/path/to/page.srf?a=1&b=2#top"
paramOrKey.addingPercentEncoding(withAllowedCharacters: allowedQueryParamAndKey)
// produces:
"https%3A%2F%2Fsome.website.com%2Fpath%2Fto%2Fpage.srf%3Fa%3D1%26b%3D2%23top"

यह ब्रायन चेन के उत्तर का एक छोटा संस्करण है। मुझे लगता है कि urlQueryAllowedनियंत्रण वर्णों को अनुमति दे रहा है जिसके माध्यम से यह ठीक है जब तक कि वे आपके क्वेरी स्ट्रिंग में कुंजी या मूल्य का हिस्सा नहीं बनाते हैं, जिस समय उन्हें भागने की आवश्यकता होती है।


2
मुझे स्विफ्ट 3 समाधान पसंद है, लेकिन यह स्विफ्ट 4 में मेरे लिए काम नहीं करता है: "अपरिवर्तनीय मूल्य पर उत्परिवर्तन सदस्य का उपयोग नहीं कर सकता है: 'urlQueryAllowed' एक केवल-संपत्ति है"।
मारीआन Marierný

@ Marián @erný बस कैरेक्टसेट को परस्पर (साथ var) बनाते हैं और फिर .removeएक दूसरे चरण में उस पर कॉल करते हैं।
sumizome

मेरा मानना ​​है कि इस और अधिकांश अन्य समाधानों में दो बार विधि को लागू करने के दौरान समस्याएँ होती हैं, उदाहरण के लिए जब एक URL को दूसरे URL के मापदंडों में एन्कोडेड पराम सहित।
FD_

@FD_ क्या आप जानते हैं या क्या आपके पास सिर्फ एक कूबड़ है? क्या आप इसके साथ प्रयोग कर सकते हैं और वापस पोस्ट कर सकते हैं? यदि इस जानकारी को शामिल किया जाए तो अच्छा होगा। धन्यवाद।
एजेपी

@AJP मैंने अभी आपके सभी स्निपेट का परीक्षण किया है। स्विफ्ट 3 और 4 ठीक काम करते हैं, लेकिन स्विफ्ट 2.2 के लिए% 2020 को% 20 के रूप में ठीक से एन्कोड नहीं किया गया है।
FD_

7

स्विफ्ट 4.2

एक त्वरित एक लाइन समाधान। originalStringउस स्ट्रिंग से बदलें जिसे आप एन्कोड करना चाहते हैं।

var encodedString = originalString.addingPercentEncoding(withAllowedCharacters: CharacterSet(charactersIn: "!*'();:@&=+$,/?%#[]{} ").inverted)

ऑनलाइन खेल का मैदान डेमो


इसने धन्यवाद का काम किया: आप डिकोड की जाँच कर सकते हैं और परिणामों को एनकोड कर सकते हैं। urldecoder.org
रक्षिता मुरंगा रोड्रिगो

4

इसे स्वयं की आवश्यकता थी, इसलिए मैंने एक स्ट्रिंग एक्सटेंशन लिखा, जो दोनों URLEncoding स्ट्रिंग्स के लिए अनुमति देता है, साथ ही अधिक सामान्य अंत लक्ष्य, "GET" शैली URL पैरामीटर में एक पैरामीटर डिक्शनरी को परिवर्तित करता है:

extension String {
    func URLEncodedString() -> String? {
        var escapedString = self.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)
        return escapedString
    }
    static func queryStringFromParameters(parameters: Dictionary<String,String>) -> String? {
        if (parameters.count == 0)
        {
            return nil
        }
        var queryString : String? = nil
        for (key, value) in parameters {
            if let encodedKey = key.URLEncodedString() {
                if let encodedValue = value.URLEncodedString() {
                    if queryString == nil
                    {
                        queryString = "?"
                    }
                    else
                    {
                        queryString! += "&"
                    }
                    queryString! += encodedKey + "=" + encodedValue
                }
            }
        }
        return queryString
    }
}

का आनंद लें!


2
यह 'और' चिह्न को एनकोड नहीं करता है। एक पैरामीटर में 'और' का उपयोग करने से क्लेरिंजिंग में f *** अप होगा
सैम

यह गलत है, यह एनकोड &या =मापदंडों में नहीं है। इसके बजाय मेरे समाधान की जाँच करें।
मारीअनार्नी

2

यह एक मेरे लिए काम कर रहा है।

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/


1

let Url = URL(string: urlString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? "")


0

स्विफ्ट 4.2

कभी-कभी ऐसा सिर्फ इसलिए होता है क्योंकि API URL से गुजरने वाले मापदंडों के लिए URL एनकोडिंग के स्लग या अनुपस्थिति में जगह होती है।

let myString = self.slugValue
                let csCopy = CharacterSet(bitmapRepresentation: CharacterSet.urlPathAllowed.bitmapRepresentation)
                let escapedString = myString!.addingPercentEncoding(withAllowedCharacters: csCopy)!
                //always "info:hello%20world"
                print(escapedString)

नोट: के बारे में पता लगाने के लिए मत भूलना bitmapRepresentation


0

यह स्विफ्ट 5 में मेरे लिए काम कर रहा है । उपयोग का मामला क्लिपबोर्ड से एक URL ले रहा है या इसी तरह जो पहले से ही बच गए वर्ण हो सकते हैं, लेकिन जिसमें यूनिकोड वर्ण भी शामिल हैं जो विफल हो सकते हैं URLComponentsया URL(string:)विफल हो सकते हैं।

सबसे पहले, एक ऐसा कैरेक्टर सेट बनाएं जिसमें सभी URL-कानूनी वर्ण शामिल हों:

extension CharacterSet {

    /// Characters valid in at least one part of a URL.
    ///
    /// These characters are not allowed in ALL parts of a URL; each part has different requirements. This set is useful for checking for Unicode characters that need to be percent encoded before performing a validity check on individual URL components.
    static var urlAllowedCharacters: CharacterSet {
        // Start by including hash, which isn't in any set
        var characters = CharacterSet(charactersIn: "#")
        // All URL-legal characters
        characters.formUnion(.urlUserAllowed)
        characters.formUnion(.urlPasswordAllowed)
        characters.formUnion(.urlHostAllowed)
        characters.formUnion(.urlPathAllowed)
        characters.formUnion(.urlQueryAllowed)
        characters.formUnion(.urlFragmentAllowed)

        return characters
    }
}

अगला, StringURL को एन्कोड करने के लिए एक विधि के साथ विस्तार करें:

extension String {

    /// Converts a string to a percent-encoded URL, including Unicode characters.
    ///
    /// - Returns: An encoded URL if all steps succeed, otherwise nil.
    func encodedUrl() -> URL? {        
        // Remove preexisting encoding,
        guard let decodedString = self.removingPercentEncoding,
            // encode any Unicode characters so URLComponents doesn't choke,
            let unicodeEncodedString = decodedString.addingPercentEncoding(withAllowedCharacters: .urlAllowedCharacters),
            // break into components to use proper encoding for each part,
            let components = URLComponents(string: unicodeEncodedString),
            // and reencode, to revert decoding while encoding missed characters.
            let percentEncodedUrl = components.url else {
            // Encoding failed
            return nil
        }

        return percentEncodedUrl
    }

}

जिसका परीक्षण किया जा सकता है जैसे:

let urlText = "https://www.example.com/폴더/search?q=123&foo=bar&multi=eggs+and+ham&hangul=한글&spaced=lovely%20spam&illegal=<>#top"
let url = encodedUrl(from: urlText)

urlअंत में मूल्य :https://www.example.com/%ED%8F%B4%EB%8D%94/search?q=123&foo=bar&multi=eggs+and+ham&hangul=%ED%95%9C%EA%B8%80&spaced=lovely%20spam&illegal=%3C%3E#top

ध्यान दें कि %20और +रिक्ति दोनों संरक्षित हैं, यूनिकोड वर्ण एन्कोडेड हैं, %20मूल urlTextमें डबल एन्कोडेड नहीं है, और एंकर (टुकड़ा, या #) रहता है।

संपादित करें: अब प्रत्येक घटक की वैधता के लिए जाँच।


0

स्विफ्ट 5 से एंडकोड स्ट्रिंग के लिए

func escape(string: String) -> String {
    let allowedCharacters = string.addingPercentEncoding(withAllowedCharacters: CharacterSet(charactersIn: ":=\"#%/<>?@\\^`{|}").inverted) ?? ""
    return allowedCharacters
}

कैसे इस्तेमाल करे ?

let strEncoded = self.escape(string: "http://www.edamam.com/ontologies/edamam.owl#recipe_e2a1b9bf2d996cbd9875b80612ed9aa4")
print("escapedString: \(strEncoded)")

0

इनमें से किसी भी उत्तर ने मेरे लिए काम नहीं किया। जब एक url में गैर-अंग्रेज़ी वर्ण होते हैं, तो हमारा ऐप क्रैश हो रहा था।

 let unreserved = "-._~/?%$!:"
 let allowed = NSMutableCharacterSet.alphanumeric()
     allowed.addCharacters(in: unreserved)

 let escapedString = urlString.addingPercentEncoding(withAllowedCharacters: allowed as CharacterSet)

आप जो करने की कोशिश कर रहे हैं उसके मापदंडों के आधार पर, आप बस अपना स्वयं का चरित्र सेट बनाना चाहते हैं। उपरोक्त अंग्रेजी वर्णों के लिए अनुमति देता है, और-._~/?%$!:

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.