swift - URL 构造函数不适用于某些字符

标签 swift url encoding

我正在尝试使用 URLRequest 从我的应用程序调用 php 脚本。 Url 路径是在 String-Variable query 中生成的,对于请求,我将其转换为这样

    guard let url = URL(string: query) else {
        print("error")
        return
    }

通常可以正常工作,但是当请求包含 ä、ö、ü、ß 等字符时,就会触发错误。我怎样才能让它发挥作用?

最佳答案

URL(string:) 初始值设定项不负责将 String 编码为有效的 URL String,它假设String 已编码为仅包含 URL 中有效的字符。因此,如果您的 String 包含无效的 URL 字符,则必须进行编码。您可以通过调用String.addingPercentEncoding(withAllowedCharacters:)来实现此目的。

let unencodedUrlString = "áűáeqw"
guard let encodedUrlString = unencodedUrlString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed), let url = URL(string: encodedUrlString) else { return }

您可以根据 URL 的哪一部分包含需要编码的字符来更改 CharacterSet,我只是将 urlQueryAllowed 用于演示目的。

关于swift - URL 构造函数不适用于某些字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50466880/

相关文章:

ios - 栏按钮项目从导航 Controller 中消失

swift - XCFramework 问题,标识符为 "ios-armv7_arm64"的库已经存在

url - 当 iframe 加载特定内容时,如何使父 url 自动更新为唯一 url?

url - Magento - Paypal IPN 配置

android - 从包含问号的 URL 启动应用程序

swift - 在加载 Collection View 时隐藏标题

git - git 分支名称中的 Powershell 和德语变音符号

javascript - 编码 JSONP <script src = Request

python - 在 python 上使用希伯来语

ios - 如何在 CALayer 中为图像制作动画