我的图片网址包含希腊字。像网址http://example.com/ΥΠΗΡΕΣΙΕΣ.jpg一样,网址类给我零值
我的代码
if let url = URL(string: "http://example.com/ΥΠΗΡΕΣΙΕΣ.jpg"){
//Image Download
}
else{
NSLog("invalidURL")
}
如何创建URL对象以下载此图像。
答案 0 :(得分:2)
请在此处查看我的回答https://stackoverflow.com/a/49492592/4601900
您需要对其进行编码因为您的上一个路径组件看起来不像普通字符串
let testurl = "http://example.com/ΥΠΗΡΕΣΙΕΣ.jpg"
if let encodedURL = testurl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed), let url = URL(string: encodedURL) {
print("valid url")
} else {
print("invalid url ")
}
Ouptut
有效网址
如果您打印encodedURL
,您将获得//这里如果您打印已编码的网址,您将获得
的 http://example.com/%CE%A5%CE%A0%CE%97%CE%A1%CE%95%CE%A3%CE%99%CE%95%CE%A3.jpg 强>
答案 1 :(得分:2)
您必须对String进行编码才能获得有效的URL。您可以使用String.addingPercentEncoding(withAllowedCharacters: )
。
let urlString = "http://example.com/ΥΠΗΡΕΣΙΕΣ.jpg"
guard let encodedString = urlString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed), let url = URL(string: encodedString) else {
return
}
print(url)
编码的网址变为:
http://example.com/%CE%A5%CE%A0%CE%97%CE%A1%CE%95%CE%A3%CE%99%CE%95%CE%A3.jpg
答案 2 :(得分:1)
您需要为URL使用UTF-8可读格式,例如
if let url = URL(string: "http://example.com/ΥΠΗΡΕΣΙΕΣ.jpg"){
将是
if let url = URL(string: "http%3A%2F%2Fexample.com%2F%CE%A5%CE%A0%CE%97%CE%A1%CE%95%CE%A3%CE%99%CE%95%CE%A3.jpg"){
您可以使用像http://www.webatic.com/run/convert/url.php这样的代码/解码服务来转换它们。或者,您可以使用网址缩短器来提供UTF-8可读网址。