diff --git a/Frameworks/RSWeb/RSWeb/Dictionary+RSWeb.swift b/Frameworks/RSWeb/RSWeb/Dictionary+RSWeb.swift index db2bddc91..99dbd87a7 100644 --- a/Frameworks/RSWeb/RSWeb/Dictionary+RSWeb.swift +++ b/Frameworks/RSWeb/RSWeb/Dictionary+RSWeb.swift @@ -12,7 +12,7 @@ public extension Dictionary { public func urlQueryString() -> String? { - // Turn a dictionary into string like foo=bar¶m2=some+thing + // Turn a dictionary into string like foo=bar¶m2=some%20thing // Return nil if empty dictionary. if isEmpty { diff --git a/Frameworks/RSWeb/RSWeb/String+RSWeb.swift b/Frameworks/RSWeb/RSWeb/String+RSWeb.swift index a8e17b29d..7fa68e816 100644 --- a/Frameworks/RSWeb/RSWeb/String+RSWeb.swift +++ b/Frameworks/RSWeb/RSWeb/String+RSWeb.swift @@ -12,8 +12,7 @@ public extension String { public func encodedForURLQuery() -> String? { - let s = replacingOccurrences(of: " ", with: "+") - guard let encodedString = s.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else { + guard let encodedString = addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else { return nil } return encodedString.replacingOccurrences(of: "&", with: "%38") diff --git a/Frameworks/RSWeb/RSWebTests/DictionaryTests.swift b/Frameworks/RSWeb/RSWebTests/DictionaryTests.swift index 01a86af78..12e692684 100644 --- a/Frameworks/RSWeb/RSWebTests/DictionaryTests.swift +++ b/Frameworks/RSWeb/RSWebTests/DictionaryTests.swift @@ -15,7 +15,7 @@ class DictionaryTests: XCTestCase { let d = ["foo": "bar", "param1": "This is a value."] let s = d.urlQueryString() - XCTAssertTrue(s == "foo=bar¶m1=This+is+a+value." || s == "param1=This+is+a+value.&foo=bar") + XCTAssertTrue(s == "foo=bar¶m1=This%20is%20a%20value." || s == "param1=This%20is%20a%20value.&foo=bar") } func testQueryStringWithAmpersand() { @@ -23,7 +23,7 @@ class DictionaryTests: XCTestCase { let d = ["fo&o": "bar", "param1": "This is a&value."] let s = d.urlQueryString() - XCTAssertTrue(s == "fo%38o=bar¶m1=This+is+a%38value." || s == "param1=This+is+a%38value.&fo%38o=bar") + XCTAssertTrue(s == "fo%38o=bar¶m1=This%20is%20a%38value." || s == "param1=This%20is%20a%38value.&fo%38o=bar") } func testQueryStringWithAccentedCharacters() { diff --git a/Frameworks/RSWeb/RSWebTests/StringTests.swift b/Frameworks/RSWeb/RSWebTests/StringTests.swift index 9a8a9b7b0..9bee18696 100644 --- a/Frameworks/RSWeb/RSWebTests/StringTests.swift +++ b/Frameworks/RSWeb/RSWebTests/StringTests.swift @@ -16,9 +16,9 @@ class StringTests: XCTestCase { XCTAssertEqual(s, "foo") s = "foo bar".encodedForURLQuery() - XCTAssertEqual(s, "foo+bar") + XCTAssertEqual(s, "foo%20bar") s = "foo bar &well".encodedForURLQuery() - XCTAssertEqual(s, "foo+bar+%38well") + XCTAssertEqual(s, "foo%20bar%20%38well") } }