不同语言中的URL,如何在Swift中转换URL?

时间:2018-03-30 13:06:33

标签: ios swift uiimage

我的图片网址包含希腊字。像网址http://example.com/ΥΠΗΡΕΣΙΕΣ.jpg一样,网址类给我零值

我的代码

if let url = URL(string: "http://example.com/ΥΠΗΡΕΣΙΕΣ.jpg"){
      //Image Download 
}
else{
     NSLog("invalidURL")
}

如何创建URL对象以下载此图像。

3 个答案:

答案 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可读网址。