我想将String下面的内容转换为URL
www.mydomain.com/key=अक्षय
我尝试了let urlToSend = URL(string: "www.mydomain.com/key=अक्षय")!,但返回nil。

我从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%AFwww.mydomain.com/key=अक्षय

最佳答案

在将URL作为字符串使用时,应将它们编码为URL作为有效的字符串。编码URL的最流行示例之一是将“”(空格)编码为“%20”。

因此,在您的情况下,URL的编码值应为:

www.mydomain.com%2Fkey=%E0%A4%85%E0%A4%95%E0%A5%8D%E0%A4%B7%E0%A4%AF

如您所见,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
}

请注意,为安全起见,编码字符串和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=अक्षय
}

同样,可选绑定是安全的。

关于ios - 如何快速将字符串转换为URL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48075421/

10-09 02:24