【问题标题】:Swift encode input URL to be as the final URL the browser showsSwift 将输入 URL 编码为浏览器显示的最终 URL
【发布时间】:2021-06-17 11:59:53
【问题描述】:

在我的 iPhone 上,当我将“zerø.info”粘贴到浏览器 (chrome/firefox) 并搜索时,我看到 URL 变成了“zer%c3%b8.info”,然后又变成了“xn- -zer-2na.info”。 在我的项目(iPhone 应用程序)中,当我调用 urlStr.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) 时,我得到“zer%c3%b8.info”。 如何在 Swift 5 中获取最终 URL“xn--zer-2na.info”?

【问题讨论】:

    标签: ios swift iphone xcode url


    【解决方案1】:

    这个叫“IDNA encoding”,基本上就是域名的Punycode前缀为“xn--”。根据this forum post,在 Swift 中没有内置的生成方法。

    有一个名为PunycodeSwift 的 CocoaPod 可以生成这些。例如,

    "zerø.info".idnaEncoded // xn--zer-2na.info
    

    请注意,这会返回一个可选值,因为如果出现以下情况,此转换可能会失败。结果比主机名允许的 63 个字符长。

    另请注意,并非所有浏览器都支持此功能。

    【讨论】:

      猜你喜欢
      • 2015-04-15
      • 2018-06-29
      • 1970-01-01
      • 1970-01-01
      • 2014-02-24
      • 1970-01-01
      • 1970-01-01
      • 2016-06-09
      • 1970-01-01
      相关资源
      最近更新 更多