如何编码特殊字符,如’;Swift2中的(NSWindowsCP1250StringEncoding)

如何编码特殊字符,如’;Swift2中的(NSWindowsCP1250StringEncoding),encoding,swift2,ios9,nsurl,Encoding,Swift2,Ios9,Nsurl,正如在Swift2中一样,不推荐使用stringByAddingPercentEscapesUsingEncoding(),而不是使用stringByAddingPercentEncodingWithAllowedCharacters() 但是如何在swift2 例如,在iOS8(swift1.2)中,我使用以下代码进行编码 NSURL(string: "myurl.php?deviceName=name’phone".stringByAddingPercentEscapesUsingEncod

正如在
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
编码时,它将无法正确编码。 为什么?

编辑2:


如何在swift2.0中对NSWindowsCP1250StringEncoding进行编码?

使用
URLPathAllowedCharacterSet()
作为字符集:

let stringURL = "myurl.php?deviceName=name'phone"
let charSet = NSCharacterSet.URLPathAllowedCharacterSet()
let encoded = stringURL.stringByAddingPercentEncodingWithAllowedCharacters(charSet)!
let url = NSURL(string: encoded)!

print(url)  // "myurl.php%3FdeviceName=name'phone"
请注意,
不必编码,它是一个有效的URL字符


更新:在评论中,您声明它仍然不起作用,因为您的编码URL被截断并包含
,但实际上这可能只是被NSURL截断的打印描述;NSURL对象包含的实际URL应该是ok。否则将是零。您应该在服务器端检查非常长但正确的URL是否存在问题。

请尝试
URLQueryAllowedCharacterSet()
,因为特殊字符出现在URL@vadian的
query
部分,它将不起作用。在服务器中,我得到了类似myName的响应™s iPhoneURLQueryAllowedCharacterSet()不起作用方法
stringByAddingPercentEncodingWithAllowedCharacters
需要
UTF-8
编码字符串。您可能需要将字符串从
WindowsCP1250
转换为
UTF-8
first@vadian无法解决问题,请帮助我是什么让你说它仍然没有正确编码?您可能需要添加更多的细节和背景,了解您期望发生的事情以及为什么它与正在发生的事情不同。谢谢。在我的编辑问题中,当我编码大字符串时,它将编码。。。。在某个角色之后。就像这样//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为什么当我将上述url传递到我的服务器时,它会返回我的自定义错误?您确定仍然存在错误吗?截短url描述中的点很可能就是这样,即打印时的截短描述。如果NSURL持有的实际url不是零,则通常可以。您应该在服务器端检查长(正确)URL的错误。让我们检查一下。我检查它对特殊字符不起作用。在服务器端,它将像myName一样解码™s的iPhone
let newURLEncodedString = urlString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())
let newURLEncodedString = urlString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())