在Swift中进行URLEncode和URLDecode小纸条

在Swift中进行URLEncode和URLDecode小纸条

·

1 min read

周末写学习英语小助手播放网络音频时,发现有些音频无法加载。仔细一看,发现使用URL初始化一个String时并不会对它进行URLEncode,所以会导致AVPlayer加载失败。搜索一下之后,留下这张小纸条。我的处理方法就是extension String,为String加入两个方法,使用了Foundation的两个方法对String进行URLEncode和URLDecode。

import Foundation
extension String {
    func urlEncoded() -> String {
        let encodeUrlString = addingPercentEncoding(withAllowedCharacters:.urlQueryAllowed)
        return encodeUrlString ?? ""
    }

    //将编码后的url转换回原始的url
    func urlDecoded() -> String {
        return removingPercentEncoding ?? ""
    }
}

使用上就非常简单了:

let url = "http://github.com/this is space/这是中文"
print(url.urlEncoded())
print(url.urlEncoded().urlDecoded())

效果如下图:

截屏2022-03-14 上午8.22.08.png