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

URL in diffrent Language, How to convert a URL in Swift?

我的图片 URL 包含一个希腊词。像 URL http://example.com/ΥΠΗΡΕΣΙΕΣ.jpg, URL class 给我 nil 值

我的代码

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

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

您需要为 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 这样的 code/decode 服务来转换这些。或者,您可以使用 url 缩写来提供 UTF-8 可读 url.

在这里查看我的回答

您需要对其进行编码,因为您的最后一个路径组件看起来不像纯字符串

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 ")
}

输出

valid url

If you print your encodedURL you will get // Here if you print encoded url you will get http://example.com/%CE%A5%CE%A0%CE%97%CE%A1%CE%95%CE%A3%CE%99%CE%95%CE%A3.jpg

您必须对字符串进行编码才能获得有效 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)

编码后的URL变为:

http://example.com/%CE%A5%CE%A0%CE%97%CE%A1%CE%95%CE%A3%CE%99%CE%95%CE%A3.jpg