编码包含表情符号图标的 url

O F*_*eno 5 url encoding urlencode nsurl ios

无法准备NSURL带有包含表情符号图标的字符串的对象。

当我尝试NSURL使用以下方法形成时:

let urlString = "http://www.example.com/"
let URL = NSURL(string: urlString)
Run Code Online (Sandbox Code Playgroud)

URL 返回值为 nil,而浏览器可以使用相同的 urlString 打开有效网页。

我想在 UIWebView 中打开它。那么有没有像如何正确编码以满足 NSURL 要求之类的想法?

任何指针将不胜感激。

更新: 当我尝试使用以下字符串准备 NSURL 对象时:

let encodedURLString = urlString.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)

它工作得很好,因为stringByAddingPercentEscapesUsingEncoding()方法将非法 url 字符转换为合法表示。但这已被弃用。

stringByAddingPercentEncodingWithAllowedCharacters()可以使用它的替代方法,但必须在不同的 url 组件上调用它,例如:

// host: "www.example.com", path: "/" 
host.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLHostAllowedCharacterSet())
path.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLPathAllowedCharacterSet())
Run Code Online (Sandbox Code Playgroud)

如何从字符串中获取 url 组件(即主机、路径等),因为当我尝试创建 NSURL/NSURLComponents 时,它返回 nil。(原因是格式错误的 url 字符串。)??