【发布时间】:2015-09-17 13:12:23
【问题描述】:
在Swift2 中,stringByAddingPercentEscapesUsingEncoding() 已被弃用,而不是使用 stringByAddingPercentEncodingWithAllowedCharacters()。
但是如何在swift2 中编码像' % & 这样的特殊字符
例如在iOS8(swift1.2) 中我使用以下代码进行编码
NSURL(string: "myurl.php?deviceName=name’phone".stringByAddingPercentEscapesUsingEncoding(NSWindowsCP1250StringEncoding)!)
它工作正常,即在服务器上它可以正确解码。
但在iOS9(Swift2.0) 我使用了以下代码
NSURL(string: "myurl.php?deviceName=name ’phone".stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLFragmentAllowedCharacterSet())!)
它无法正确解码。
请告诉我如何在 swift2.0 中编码特殊字符?
编辑:
Eric D 的答案是正确的,但是当我在stringURL 以下进行编码时,它不会正确编码。
为什么?
let stringURL = "https://my.server.com/login.php?e=email&dn=my’s iPad&d=5&er=D550772E-34BB-4DCB-89C9-E746FAD83D24&tz=330"
print(stringURL)
let charSet = NSCharacterSet.URLPathAllowedCharacterSet()
let encoded = stringURL.stringByAddingPercentEncodingWithAllowedCharacters(charSet)!
let url = NSURL(string: encoded.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLFragmentAllowedCharacterSet())!)!
print(url) //https%253A//my.server.com/login.php%253Fe=email&dn=my%25E2%2580%2599s%2520iPad&d=5&er=D550772E-34BB-4DCB-89C9-E746FAD83D ... 4&tz=330
编辑 2:
如何在swift2.0中编码NSWindowsCP1250StringEncoding?
【问题讨论】:
-
试试
URLQueryAllowedCharacterSet(),因为特殊字符出现在URL的query部分 -
@vadian 它不起作用。在服务器中,我得到了类似 myName 的 iPhone 的响应
-
URLQueryAllowedCharacterSet() 不起作用
-
方法
stringByAddingPercentEncodingWithAllowedCharacters需要UTF-8编码字符串。您可能需要先将字符串从WindowsCP1250转换为UTF-8 -
@vadian 无法解决问题,请帮助我
标签: encoding swift2 ios9 nsurl