Swift - encode URL
Swift 3
In Swift 3 there is addingPercentEncoding
let originalString = "test/test"
let escapedString = originalString.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)
print(escapedString!)
Output:
test%2Ftest
Swift 1
In iOS 7 and above there is stringByAddingPercentEncodingWithAllowedCharacters
var originalString = "test/test"
var escapedString = originalString.stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet())
println("escapedString: \(escapedString)")
Output:
test%2Ftest
The following are useful (inverted) character sets:
URLFragmentAllowedCharacterSet "#%<>[\]^`{|}
URLHostAllowedCharacterSet "#%/<>?@\^`{|}
URLPasswordAllowedCharacterSet "#%/:<>?@[\]^`{|}
URLPathAllowedCharacterSet "#%;<>?[\]^`{|}
URLQueryAllowedCharacterSet "#%<>[\]^`{|}
URLUserAllowedCharacterSet "#%/:<>?@[\]^`
If you want a different set of characters to be escaped create a set:
Example with added "=" character:
var originalString = "test/test=42"
var customAllowedSet = NSCharacterSet(charactersInString:"=\"#%/<>?@\\^`{|}").invertedSet
var escapedString = originalString.stringByAddingPercentEncodingWithAllowedCharacters(customAllowedSet)
println("escapedString: \(escapedString)")
Output:
test%2Ftest%3D42
Example to verify ascii characters not in the set:
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)\'")
}
How can I encode a URL to pass Percent (%) sign in Swift?
Looks like you're trying to use the Wind Toolkit Data API.
In one of their example requests, they have a query parameter that they show looks like this:
wkt=POINT(-104.23828125%2039.90973623453719)
That %20
is really just a URL-encoded space character.
(It is kind of confusing how they show a URL-encoded value for the wkt
parameter, but not for other parameters whose values contain spaces like full_name=Sample User
or affiliation=Test Organization
, so it's understandable where the confusion comes from.)
Anyway, to fix the problem, just replace the %
character in your wktStr
with a space:
let wktStr: String = "POINT("+formattedX+" "+formattedY+")"
URL Encoding of String accepting all special characters in swift
Thank you @MartinR and @benleggiero for : How do I URL encode a string
It helped a lot.
It was not including all special characters.
Checked one by one and added those which were missing as below:
extension CharacterSet {
public static let urlQueryParameterAllowed = CharacterSet.urlQueryAllowed.subtracting(CharacterSet(charactersIn: "&?~!$*(.,)_-+':"))
public static let urlQueryDenied = CharacterSet.urlQueryAllowed.inverted()
public static let urlQueryKeyValueDenied = CharacterSet.urlQueryParameterAllowed.inverted()
public static let urlPathDenied = CharacterSet.urlPathAllowed.inverted()
public static let urlFragmentDenied = CharacterSet.urlFragmentAllowed.inverted()
public static let urlHostDenied = CharacterSet.urlHostAllowed.inverted()
public static let urlDenied = CharacterSet.urlQueryDenied
.union(.urlQueryKeyValueDenied)
.union(.urlPathDenied)
.union(.urlFragmentDenied)
.union(.urlHostDenied)
public func inverted() -> CharacterSet {
var copy = self
copy.invert()
return copy
}
}
Related Topics
Stringbyappendingpathcomponent Is Unavailable
Uiscrollview Pauses Nstimer Until Scrolling Finishes
Getting iOS System Uptime, That Doesn't Pause When Asleep
In Ios13 the Status Bar Background Colour Is Different from the Navigation Bar in Large Text Mode
Are There APIs For Custom Vibrations in Ios
Cgcontextdrawimage Draws Image Upside Down When Passed Uiimage.Cgimage
Uiview and Initwithframe and a Nib File. How to Get the Nib File Loaded
Swiftui Navigationlink Loads Destination View Immediately, Without Clicking
How to Save Local Data in a Swift App
How to Parse Json Response from Alamofire API in Swift
How to Pass Data Between View Controllers in Swift
Trying to Handle "Back" Navigation Button Action in Ios
Table Header Views in Storyboards
Customize Uitableview Header Section
How to Make Uilabel Display Outlined Text
How to Determine Whether Code Is Running in Debug/Release Build