Aks*_*are 1 iphone xcode ios swift
我想将下面的String转换为URL
www.mydomain.com/key=?????
我试过let urlToSend = URL(string: "www.mydomain.com/key=?????")!但它返回零.
我从textField获得了'षक्षय'关键字,它可以是任何本地语言.
它适用于英语但不能使用当地语言.
我用let url = URL(string: "www.mydomain.com")?.appendingPathComponent("key=?????")它给了www.mydomain.com/key=%E0%A4%85%E0%A4%95%E0%A5%8D%E0%A4%B7%E0%A4%AF
但现在我要
www.mydomain.com/key=%E0%A4%85%E0%A4%95%E0%A5%8D%E0%A4%B7%E0%A4%AF到www.mydomain.com/key=?????
您需要对 URL 进行编码。
\n\nlet urlString = "www.mydomain.com/key=\xe0\xa4\x85\xe0\xa4\x95\xe0\xa5\x8d\xe0\xa4\xb7\xe0\xa4\xaf".addingPercentEncoding(withAllowedCharacters: .urlPathAllowed)\nlet url = URL(string: urlString!)\n\nlet decodedUrl = urlString?.removingPercentEncoding\nRun Code Online (Sandbox Code Playgroud)\n\n请记住,您不应该强制解开 URL 和字符串,而应使用 if let 或 Guard 语句。
\n使用URL作为字符串时,您应该将它们编码为URL有效; 编码URL的最流行的例子之一是""(空格)将被编码为"%20".
因此,在您的情况下,您的网址的编码值应为:
www.mydomain.com%2Fkey=%E0%A4%85%E0%A4%95%E0%A5%8D%E0%A4%B7%E0%A4%AF
Run Code Online (Sandbox Code Playgroud)
正如您所注意到的那样,价值key会发生变化
来自:"अक्षय"
到: "%E0%A4%85%E0%A4%95%E0%A5%8D%E0%A4%B7%E0%A4%AF"
这将使URL有效.
如何:
你可以得到上面这样的结果:
let string = "www.mydomain.com/key=?????"
if let encodedString = string.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed), let url = URL(string: encodedString) {
print(url) // www.mydomain.com%2Fkey=%E0%A4%85%E0%A4%95%E0%A5%8D%E0%A4%B7%E0%A4%AF
}
Run Code Online (Sandbox Code Playgroud)
请注意,为了安全起见,编码字符串和url都有可选绑定.
解码网址:
您还可以返回原始未编码的URL(解码它),如下所示:
let decodedString = "www.mydomain.com%2Fkey=%E0%A4%85%E0%A4%95%E0%A5%8D%E0%A4%B7%E0%A4%AF"
if let unwrappedDecodedString = decodedString.removingPercentEncoding {
print(unwrappedDecodedString) // www.mydomain.com/key=?????
}
Run Code Online (Sandbox Code Playgroud)
再次,可选绑定是安全的.