我正在尝试使用URLRequest从我的应用程序调用php脚本。
Url路径在String-Variable query
中生成,对于请求,我将其转换为
guard let url = URL(string: query) else {
print("error")
return
}
通常它可以工作,但是当请求包含ä,ö,ü,ß等字符时,会触发错误。我怎样才能使它发挥作用?
答案 0 :(得分:0)
URL(string:)
初始值设定项不会将String
编码为有效网址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 }
您可以更改CharacterSet
,具体取决于您的网址中包含需要编码的字符,我只是使用urlQueryAllowed
进行演示。
答案 1 :(得分:0)
将您的网址分为两部分:
let baseURLString = "https://www.example.com"
let pathComponent = "áűáeqw"
let fullURL = URL(string: baseURLString)?.appendingPathComponent(pathComponent)