我正在尝试使用 URLRequest 从我的应用程序调用 php 脚本。
Url 路径是在 String-Variable query
中生成的,对于请求,我将其转换为这样
guard let url = URL(string: query) else {
print("error")
return
}
通常可以正常工作,但是当请求包含 ä、ö、ü、ß 等字符时,就会触发错误。我怎样才能让它发挥作用?
最佳答案
URL(string:)
初始值设定项不负责将 String
编码为有效的 URL String
,它假设String
已编码为仅包含 URL
中有效的字符。因此,如果您的 String
包含无效的 URL 字符,则必须进行编码。您可以通过调用String.addingPercentEncoding(withAllowedCharacters:)
来实现此目的。
let unencodedUrlString = "áűáeqw"
guard let encodedUrlString = unencodedUrlString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed), let url = URL(string: encodedUrlString) else { return }
您可以根据 URL 的哪一部分包含需要编码的字符来更改 CharacterSet
,我只是将 urlQueryAllowed
用于演示目的。
关于swift - URL 构造函数不适用于某些字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50466880/