【问题标题】:URL in diffrent Language, How to convert a URL in Swift?不同语言的 URL,如何在 Swift 中转换 URL?
【发布时间】:2018-03-30 13:06:32
【问题描述】:

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

我的代码

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

我如何创建一个 URL 对象来下载这些图像。

【问题讨论】:

    标签: ios swift uiimage


    【解决方案1】:

    在这里查看我的答案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 ")
    }
    

    输出

    有效的网址

    如果你打印你的encodedURL 你会得到 // 如果你打印编码的 url 你会得到 http://example.com/%CE%A5%CE%A0%CE%97%CE%A1%CE%95%CE%A3%CE%99%CE%95%CE%A3.jpg

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-29
          • 1970-01-01
          • 1970-01-01
          • 2013-06-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多